属性动画-基本使用

  • 属性动画可以对任意对象的属性进行动画而不仅仅是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”,分别表
示连续重复和逆向重复。连续重复比较好理解,就是动画每次都重新开始播放,而逆向重复是指第一次播放完以后,第二次会倒着播放动画,第三次再重头开始播放动画,第四次再倒着播放动画,如此反复。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值