欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

属性动画-基本使用

程序员文章站 2022-05-02 22:14:11
...
  • 属性动画可以对任意对象的属性进行动画而不仅仅是View,动画默认时间间隔300ms,默认帧率10ms/帧。其可以达到的效果是:在一个时间间隔内完成对象从一个属性值到另一个属性值的改变。
  • ValueAnimator、ObjectAnimator和AnimatorSet,其中ObjectAnimator继承自ValueAnimator,AnimatorSet是动画集合,可以定义一组动画
  • 下面是简单的平移按钮的动画,通过直接修改translationY的属性以达到平移的效果。
 ObjectAnimator.ofFloat(btn, "translationY", 0f, 200f).setDuration(3000).start()
  • 改变一个View的背景色属性,开始动画 背景色不断渐变
		val colorAnim: ValueAnimator = ObjectAnimator.ofInt(btn, "backgroundColor", Color.BLUE, Color.RED)
        colorAnim.duration = 3000
        colorAnim.setEvaluator(ArgbEvaluator())
        colorAnim.repeatCount = Integer.MAX_VALUE
        colorAnim.repeatMode = ValueAnimator.REVERSE
        colorAnim.start()
  • AnimatorSet使用
val set = AnimatorSet()
        set.playTogether(
                ObjectAnimator.ofFloat(btn, "rotationX", 0f, 360f),
                ObjectAnimator.ofFloat(btn, "rotationY", 0f, 180f),
                ObjectAnimator.ofFloat(btn, "rotation", 0f, -90f),
                ObjectAnimator.ofFloat(btn, "translationX", 0f, 90f),
                ObjectAnimator.ofFloat(btn, "translationY", 0f, 90f),
                ObjectAnimator.ofFloat(btn, "scaleX", 1f, 1.5f),
                ObjectAnimator.ofFloat(btn, "scaleY", 1f, 0.5f),
                ObjectAnimator.ofFloat(btn, "alpha", 1f, 0.25f, 1f)
        )
        set.setDuration((5 * 1000).toLong()).start()

属性动画除了通过代码实现以外,还可以通过XML来定义。属性动画需要定义在res/animator/目录下

<set
android:ordering=["together" | "sequentially"]>
<objectAnimator
android:propertyName="string"
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>
<animator
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>
<set>
...
</set>
</set>

对于一个动画来说,有两个属性这里要特殊说明一下,一个是android:repeatCount,它表示动画循环的次数,默认值为0,其中-1表示无限循环;另一个是android:repeatMode,它表示动画循环的模式,有两个选项:“repeat”和“reverse”,分别表
示连续重复和逆向重复。连续重复比较好理解,就是动画每次都重新开始播放,而逆向重复是指第一次播放完以后,第二次会倒着播放动画,第三次再重头开始播放动画,第四次再倒着播放动画,如此反复。

相关标签: 属性动画