Android开发-动画 补间动画(Tween Animation)(四)

165 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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);   

}

使用起来是不是也很简单,旋转动画可以实现比较好玩的效果,比如一直旋转可以制作出一个风车一样的效果出来,可以制作类似抖音里面那种螺纹一样的图片效果,当然咯,看你的想象力,你想怎么玩都可以,想制作什么效果,只要你想就没有不可以实现的。