主结构特别简单就不单独说明了
package com.mj.regist; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.view.WindowManager; public class Loading_view extends ProgressDialog { public Loading_view(Context context) { super(context); } public Loading_view(Context context, int theme) { super(context, theme); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(getContext()); } private void init(Context context) { setCancelable(true); setCanceledOnTouchOutside(false); setContentView(R.layout.pro_dialog);//loading的xml文件 WindowManager.LayoutParams params = getWindow().getAttributes(); params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; getWindow().setAttributes(params); } @Override public void show() {//开启 super.show(); } @Override public void dismiss() {//关闭 super.dismiss(); } }
对应的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" android:background="@drawable/pro_shape" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <ProgressBar android:id="@+id/pb_load" android:layout_width="65dp" android:layout_height="65dp" android:layout_centerInParent="true" android:indeterminateDrawable="@drawable/pro_dilogstlr" /> </RelativeLayout> <TextView android:id="@+id/tv_load_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="加载中..." android:textColor="#9a9b98" android:textSize="12sp" /> </LinearLayout>对应的shap属性:在Drawable路径下
pro_dilogstlr.xml
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="720"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="15" android:useLevel="false"> <gradient android:type="sweep" android:useLevel="false" android:startColor="#55c6c6c6" android:centerColor="#c6c6c6" android:centerY="0.50" android:endColor="#c6c6c6" /> </shape> </animated-rotate>pro_shape.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="8dp" /> <solid android:color="#88000000" /> </shape>
调用:
private void showDialog(){ loading = new Loading_view(this,R.style.CustomDialog); loading.show(); } private void dismisDialog(){ loading.dismiss();//3秒后调用关闭加载的方法 }
剩下的就自由发挥吧,有问题发私信或者评论联系我!有问题欢迎指出。