AnimatorSet的用法(多动画同时播放)

Posted lgz0921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AnimatorSet的用法(多动画同时播放)相关的知识,希望对你有一定的参考价值。

首先是要操作的布局:

// 下面是伪码
<xxxx
    android:id="@+id/my_view"
    android:layout_width="xxdp"
    android:layout_height="xxdp" />

然后搞一个对象: 

var animationSet = AnimatorSet()

最后是具体用法,解释写在代码里面:

    private fun myAnimationSet() {
        // findById等方法拿到view
        my_view = **********
        // 监听事件,可以在它的生命周期上做操作
        animationSet?.addListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(animation: Animator?) {
            }

            override fun onAnimationEnd(animation: Animator?) {
            }

            override fun onAnimationCancel(animation: Animator?) {
            }

            override fun onAnimationRepeat(animation: Animator?) {
            }

        })
        // 沿x轴缩小一半
        val x = ObjectAnimator.ofFloat(my_view, "scaleX", 1.0f, 0.5f)
        // 沿y轴缩小一半
        val y = ObjectAnimator.ofFloat(my_view, "scaleY", 1.0f, 0.5f)

        // 下面连续两行表示从my_view中心缩小
        val width = ObjectAnimator.ofFloat(my_view, "pivotX", my_view.width / 2f)
        val height = ObjectAnimator.ofFloat(my_view, "pivotY", my_view.height / 2f)

        // 透明度
        val alpha = ObjectAnimator.ofFloat(my_view, "alpha", 1.0f, 0.0f)
        // 同时播放多个动画
        animationSet?.playTogether(x, y, width, height, alpha)
        // 播放动画持续时间
        animationSet?.duration = 100
        //开始播放
        animationSet?.start()
    }

注意:操作会对组件的属性进行修改,如果需要复用需要回到最初

回到最初的代码:

    // 下面是伪码
    my_view {
        my_view.scaleX = 1.0f
        my_view.scaleY = 1.0f
        my_view.alpha = 1.0f
    }

以上是关于AnimatorSet的用法(多动画同时播放)的主要内容,如果未能解决你的问题,请参考以下文章

Android 动画之AnimatorSet

一起Talk Android吧(第四百九十回:动画集合AnimatorSet)

Android动画Animator开发问题

Animation动画详解——联合动画的XML实现与使用示例

某些设备上的 Animator/AnimatorSet 问题

View体系之属性动画