效果图
1,对话框封装类
public class DialogUtils { public static Dialog createLoadingDialog(Context context, String msg) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.dialog_loading, null);// 得到加载view LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_loading_view);// 加载布局 TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字 tipTextView.setText(msg);// 设置加载信息rotate_animationrotate_animation Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle);// 创建自定义样式dialog loadingDialog.setCancelable(true); // 是否可以按“返回键”消失 loadingDialog.setCanceledOnTouchOutside(false); // 点击加载框以外的区域 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局 /** *将显示Dialog的方法封装在这里面 */ Window window = loadingDialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setGravity(Gravity.CENTER); window.setAttributes(lp); window.setWindowAnimations(R.style.PopWindowAnimStyle); loadingDialog.show(); return loadingDialog; } /** * 关闭dialog * <p> * * @param mDialogUtils */ public static void closeDialog(Dialog mDialogUtils) { if (mDialogUtils != null && mDialogUtils.isShowing()) { mDialogUtils.dismiss(); } } }
2,布局文件dialog_loading.xml代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog_loading_view" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="150dp" android:layout_height="110dp" android:gravity="center" android:background="@drawable/loading_bg" android:orientation="vertical" android:paddingBottom="10dp" android:paddingLeft="21dp" android:paddingRight="21dp" android:paddingTop="10dp"> <ProgressBar android:id="@+id/progressBar1" android:layout_width="35dp" android:layout_height="35dp" android:layout_gravity="center_horizontal" android:indeterminateBehavior="repeat" android:indeterminateDrawable="@drawable/dialog_loading" android:indeterminateOnly="true" /> <TextView android:id="@+id/tipTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="加载中..." android:textColor="#f0f0f0" android:textSize="15sp" /> </LinearLayout> </LinearLayout>3,资源文件 dialog_loading.xml
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@mipmap/dialog_loading_img" android:pivotX="50%" android:pivotY="50%" />4,style样式:
名字:PopWindowAnimStyle
<!-- popup window 显示消失动画--> <style name="PopWindowAnimStyle"> <item name="android:windowShowAnimation">@anim/dialog_enter</item> <!-- 指定显示的动画xml --> <item name="android:windowHideAnimation">@anim/dialog_exit</item> <!-- 指定消失的动画xml --> </style>名字:MyDialogStyle<!-- 加载对话框 --> <style name="MyDialogStyle"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:backgroundDimEnabled">true</item> </style>Demo代码可以下载点击打开链接