1、类 package com.example.administrator.circlearoundpro; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.view.Window; import android.view.WindowManager; import android.view.animation.AnimationSet; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.ImageView; /** * Loading弹框 * Created by zst on 2018/5/8. */ public class LoadingDialog extends Dialog { private ImageView iv_ing; private AnimationSet animationSet; private static LoadingDialog instance; private Context mContext; public static LoadingDialog getInstance(Context context) { if (instance == null) { instance = new LoadingDialog(context); } return instance; } private LoadingDialog(@NonNull Context context) { super(context); this.mContext = context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //背景透明处理 getWindow().requestFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 0.5f; lp.dimAmount = 0.0f; getWindow().setAttributes(lp); this.setContentView(R.layout.dialog_loading); //设置dialog属性 setCancelable(true); setCanceledOnTouchOutside(false); iv_ing = (ImageView) findViewById(R.id.iv_ing); iv_ing.setBackgroundColor(Color.TRANSPARENT); //加载动画 loadIng(); } @Override protected void onStart() { super.onStart(); iv_ing.startAnimation(animationSet);//开始播放 } @Override protected void onStop() { super.onStop(); } //加载动画 private void loadIng() { animationSet = new AnimationSet(true); RotateAnimation animation_rotate = new RotateAnimation(0, +359, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f); //第一个参数fromDegrees为动画起始时的旋转角度 //第二个参数toDegrees为动画旋转到的角度 //第三个参数pivotXType为动画在X轴相对于物件位置类型 //第四个参数pivotXValue为动画相对于物件的X坐标的开始位置 //第五个参数pivotXType为动画在Y轴相对于物件位置类型 //第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置 animation_rotate.setRepeatCount(-1); animation_rotate.setStartOffset(0); animation_rotate.setDuration(1000); LinearInterpolator lir = new LinearInterpolator(); animationSet.setInterpolator(lir); animationSet.addAnimation(animation_rotate); } }
2、dialog_loading.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_body" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv_ing" android:layout_width="60dp" android:layout_height="60dp" android:layout_centerInParent="true" android:src="@drawable/progress_loading" /> </LinearLayout>
3、progress_loading
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360"> <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false"> <gradient android:endColor="@android:color/white" android:startColor="@android:color/transparent" android:type="sweep" android:useLevel="false" /> </shape> </rotate>
4、调用
LoadingDialog.getInstance(MainActivity3.this).show();