java代码
package com.example.administrator.newspolice.view; import android.app.ProgressDialog; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.text.TextUtils; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import com.example.administrator.newspolice.R; /** * @desc: 自定义提示Dialog */ public class CustomProgressDialog extends ProgressDialog { /** * 提示信息 */ private String loadingMsg; private boolean outDismiss; public CustomProgressDialog(Context context, String loadingMsg, boolean outDismiss) { super(context, R.style.Custom_Progress); this.loadingMsg = loadingMsg; this.outDismiss = outDismiss; setShowing(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_progress_layout); setCanceledOnTouchOutside(outDismiss); setBackGround(); initView(); } /** * 初始化 * * @author:xiaoj * @createTime:2017年8月22日 上午11:36:50 */ private void initView() { TextView tvMsg = (TextView) findViewById(R.id.tv_dialog_msg); tvMsg.setText(loadingMsg); if (TextUtils.isEmpty(loadingMsg) || "".equals(loadingMsg.trim())) { tvMsg.setVisibility(View.GONE); } ImageView ivLoading = (ImageView) findViewById(R.id.iv_dialog_loading); // 获取ImageView上的动画背景 AnimationDrawable animationDrawable = (AnimationDrawable) ivLoading.getBackground(); animationDrawable.start(); } /** * 设置背景 * * @author:xiaoj * @createTime:2017年5月23日 上午10:22:37 */ private void setBackGround() { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.gravity = Gravity.CENTER; lp.dimAmount = 0.2f; getWindow().setAttributes(lp); } /** * 消失 * * @author:xiaoj * @createTime:2017年5月23日 上午9:21:27 */ public void setDismiss() { this.dismiss(); } /** * 显示 * * @author:xiaoj * @createTime:2017年5月23日 上午9:21:40 */ public void setShowing() { if (isShowing()) { this.dismiss(); } this.show(); } }
style属性
<!-- 自定义加载Dialog --> <style name="Custom_Progress" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/bg_custom_progress" android:gravity="center_horizontal" android:orientation="vertical" android:paddingBottom="20dp" android:paddingLeft="30dp" android:paddingRight="30dp" android:paddingTop="20dp" > <ImageView android:id="@+id/iv_dialog_loading" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/bg_loading_anim" /> <TextView android:id="@+id/tv_dialog_msg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:textColor="@color/silver" /> </LinearLayout>
bg_loading_anim.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@mipmap/ic_loading_0" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_1" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_2" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_3" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_4" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_5" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_6" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_7" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_8" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_9" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_10" android:duration="60"/> <item android:drawable="@mipmap/ic_loading_11" android:duration="60"/> </animation-list>
bg_custom_progress.xml <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#ff404040" /> <corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" android:topLeftRadius="8dp" android:topRightRadius="8dp" /> </shape>