android中的加载动画 上代码:
这是使用方式:
public class LoadingActivity extends AppCompatActivity { //加载动画activity private Dialog loading; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_loading); } //显示菊花转 public void showFlower(View view) { loading = MyProgress.createLoadingDialog(this, R.mipmap.loading_flower); loading.show(); } // 显示美团进度对话框 public void showMeiTuan(View v) { loading = MyProgress.createProgressLoading(this, R.drawable.anim_loading); loading.show(); } }这是加载动画那个公共类:
public class MyProgress { //自定义加载动画 //旋转 public static Dialog createLoadingDialog(Context context,int resId) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.loading_layout, null);// 得到加载view RelativeLayout layout = (RelativeLayout) v.findViewById(R.id.dialog_view);// 加载布局 //xml中的ImageView ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); spaceshipImage.setBackgroundResource(resId); // 加载动画 Animation loadAnimation = AnimationUtils.loadAnimation(context, R.anim.my_progress); // 使用ImageView显示动画 spaceshipImage.startAnimation(loadAnimation); Dialog loadingDialog = new Dialog(context, R.style.nocolor_progress);// 创建自定义样式dialog loadingDialog.setCanceledOnTouchOutside(true); loadingDialog.setCancelable(true);// 可以用“返回键”取消 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局 return loadingDialog; } //帧动画 public static Dialog createProgressLoading(Context context,int resId) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.loading_layout, null);// 得到加载view RelativeLayout layout = (RelativeLayout) v.findViewById(R.id.dialog_view);// 加载布局 //xml中的ImageView ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); spaceshipImage.setBackgroundResource(resId); // 加载动画 // 通过ImageView对象拿到背景显示的AnimationDrawable final AnimationDrawable mAnimation = (AnimationDrawable) spaceshipImage.getBackground(); // 为了防止在onCreate方法中只显示第一帧的解决方案之一 spaceshipImage.post(new Runnable() { @Override public void run() { mAnimation.start(); } }); Dialog loadingDialog = new Dialog(context, R.style.nocolor_progress);// 创建自定义样式dialog loadingDialog.setCanceledOnTouchOutside(true); loadingDialog.setCancelable(true);// 可以用“返回键”取消 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局 return loadingDialog; } }
这是loading_layout那个页面布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/no"> <ImageView android:layout_centerInParent="true" android:id="@+id/img" android:layout_width="40dp" android:layout_height="40dp" android:background="@mipmap/ic_progress_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在加载... " android:id="@+id/textView" android:layout_below="@+id/img" android:layout_centerHorizontal="true" android:layout_marginTop="25dp" /> </RelativeLayout>这是my_progress那个anim:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <rotate android:duration="1000" android:fromDegrees="0" android:interpolator="@android:anim/linear_interpolator" android:pivotX="50%" android:pivotY="50%" android:repeatCount="-1" android:repeatMode="restart" android:startOffset="-1" android:toDegrees="+360" /> </set>这是dialog的样式:
<!--菊花转样式--> <style name="nocolor_progress" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item>
<!--@color/no #00000000--><item name="android:windowBackground">@color/no</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item></style>
这是anim_loading:
<?xml version="1.0" encoding="utf-8"?> <animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@mipmap/progress_loading_image_01" android:duration="150"/> <item android:drawable="@mipmap/progress_loading_image_02" android:duration="150"/> </animation-list>