项目中要实现loading的动画,只有一张图片。需要将此图片做成绕中心旋转的效果。
两种方法:
一、需要在java代码中启动动画
1.首先定义一个ImageView
<ImageView
android:id="@+id/loading_img"
android:layout_width="100px"
android:layout_height="100px"
android:layout_centerInParent="true"
android:src="@drawable/allscreen_loading" />
2.定义旋转效果:
在res下添加目录anim,在anim目录下创建loading的动画
loading_anim.xml内容是:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
android:repeatCount="-1"
android:interpolator="@android:anim/linear_interpolator" />
3.代码中设置动画开始:
//定义:
private ImageView mLoadingImageView;
private Animation mLoadingAnim;
//初始化:
mLoadingImageView = findViewById(R.id.loading_img);
mLoadingAnim = AnimationUtils.loadAnimation(this, R.anim.loading_anim);
mLoadingImageView.startAnimation(mLoadingAnim);
其中linear_interpolator
表示是匀速的~
二、不需要在java代码中启动,推荐
在drawable文件夹下新建一个loading.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/allscreen_loading"
android:duration="1000"
android:fromDegrees="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:repeatCount="-1"
android:repeatMode="restart"
android:toDegrees="360.0"></animated-rotate>
然后在imageView那使用这个drawable即可
android:src="@drawable/loading"