持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
前面已经介绍了补间动画的前三种动画实现,渐变动画(AlphaAnimation),缩放动画(ScaleAnimation)和平移动画(TranslateAnimation),它们都可以用xml+java和纯java的实现方式来展示动画效果,具体实现也比较简单,实现方式也大体相似,相信只要简单的写一两次就可以上手了吗,那么下面就来介绍最后一种动画的实现方式旋转动画(RotateAnimation)。
RotateAnimation的实现
和前面几个动画的实现方式一样,它也是支持2种实现方式,下面也分别介绍具体的简单实现。
1、xml+java实现
首先创建一个xml,anim_rotate.xml:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="180"
android:duration = "1000"
android:repeatCount = "-1"
android:drawable = "@drawable/anim_rotate"
android:visible = "true">
</rotate>
</rotate>
xml中涉及到的属性值,简单介绍下几个比较特殊的: 1)pivotX和pivotY:这2个属性的意思就是当前view的旋转点x轴和y轴的坐标或者百分比,比如当前view的大小是200,那么你想让当前view的中心点旋转,那么就可以设置pivotX和pivotY为100,100,如果不知道当前view的具体尺寸,就可以设置百分比50%,意思就是中心点旋转; 2)fromDegrees和toDegrees:旋转开始的角度和旋转最终角度;
java执行代码:
public class MainActivity extends Activity{
private RotateAnimation rotateAnimation;
private ImageView rotateImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rotateImage = findViewById(R.id.image_rotate);
rotateAnimation = (RotateAnimation) (RotateAnimation)AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_rotate);
rotateImage.setAnimation(rotateAnimation);
rotateImage.startAnimation(rotateAnimation);
}
}
上面是把图片写在xml里面了,也可以直接在ImageView中设置图片。
2、纯java实现:
public class MainActivity extends Activity{
private RotateAnimation rotateAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rotateImage = findViewById(R.id.image_rotate);
startRotateAnimation();
}
}
public void startRotateAnimation(){
rotateAnimation = new RotateAnimation(0f, 180f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(1000);
rotate.setRepeatCount(-1);
rotateImage.setAnimation(rotateAnimation);
}
使用起来是不是也很简单,旋转动画可以实现比较好玩的效果,比如一直旋转可以制作出一个风车一样的效果出来,可以制作类似抖音里面那种螺纹一样的图片效果,当然咯,看你的想象力,你想怎么玩都可以,想制作什么效果,只要你想就没有不可以实现的。