package progressdialog.hanwei.com.dialog; import android.app.Dialog; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.view.Gravity; import android.widget.ImageView; import android.widget.TextView; import progressdialog.hanwei.com.R; /** * Created by 陈苗辉 on 2016/12/14. */ public class ProgressDialog extends Dialog{ private Context context; public ProgressDialog(Context context) { super(context); this.context = context; } public ProgressDialog(Context context, int themeResId) { super(context, themeResId); } protected ProgressDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } private static ProgressDialog progressDialog; //创建dialog的样式 public static ProgressDialog createDialog(Context context){ progressDialog = new ProgressDialog(context, R.style.ProgressDialogStyle); progressDialog.setCanceledOnTouchOutside(false); progressDialog.setContentView(R.layout.progressdialog); progressDialog.getWindow().getAttributes().gravity = Gravity.CENTER; return progressDialog ; } @Override public void onWindowFocusChanged(boolean hasFocus) { if (progressDialog == null) { return; } //添加控件 执行帧动画 ImageView imageView = (ImageView) progressDialog.findViewById(R.id.loadingImageView); AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground(); animationDrawable.start(); } public ProgressDialog setTitle(String title) { return progressDialog; } public ProgressDialog setMessage(String strMessage){ TextView tvMessage = (TextView)progressDialog.findViewById(R.id.id_tv_loadingmsg); if (tvMessage != null){ tvMessage.setText(strMessage); } return progressDialog; } }2.主要在自定义的Dialog中创建样式:
public static ProgressDialog createDialog(Context context){ progressDialog = new ProgressDialog(context, R.style.ProgressDialogStyle); progressDialog.setCanceledOnTouchOutside(false); progressDialog.setContentView(R.layout.progressdialog); progressDialog.getWindow().getAttributes().gravity = Gravity.CENTER; return progressDialog ; }
<style name="ProgressDialogStyle" parent="@style/ProgressDialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> </style>
<style name="ProgressDialog" parent="@android:style/Theme.Dialog"> <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> </style>3.要加载的样式布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ImageView android:id="@+id/loadingImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/progress_round"/> <TextView android:id="@+id/id_tv_loadingmsg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textSize="20dp"/> </LinearLayout>4.红色部分添加的动画图片(特别提醒一下animation-list在Studio下的anim是找不到的要放在drawable下):
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/progress_1" android:duration="200"/> <item android:drawable="@drawable/progress_2" android:duration="200"/> <item android:drawable="@drawable/progress_3" android:duration="200"/> <item android:drawable="@drawable/progress_4" android:duration="200"/> <item android:drawable="@drawable/progress_5" android:duration="200"/> <item android:drawable="@drawable/progress_6" android:duration="200"/> <item android:drawable="@drawable/progress_7" android:duration="200"/> <item android:drawable="@drawable/progress_8" android:duration="200"/> </animation-list>5.在自定义的Dialog中执行onWindowFocusChanged方法来执行动画效果
ProgressDialog dialog = ProgressDialog.createDialog(this); dialog.setMessage("数据加载中..."); dialog.show();Android自定义ProgressDialog加载框的实现 转载https://www.codesocang.com/appboke/33992.html
热门源码