AnimatorX - 让你的动画也能享受协程

AnimatorX

动画 + 协程 = Power!

Github地址

执行单个动画

  • 位移动画
launch {
    //沿着X轴正向移动300像素
    button.translationX(0f, 300f)
}

launch {
    //沿着Y轴正向移动300像素
    button.translationY(0f, 300f)
}

launch {
    //沿着Z轴正向移动300像素
    button.translationZ(0f, 300f)
}
  • 缩放动画
launch {
    //沿着X轴缩放,从原始大小放大到3倍大小
    button.scaleX(1f, 3f)
}

launch {
    //沿着Y轴缩放,从原始大小放大到3倍大小
    button.scaleY(1f, 3f)
}
  • 旋转动画
launch {
    //沿着button中心旋转180度
    button.rotation(0f, 180f)
}

launch {
    //沿着X轴旋转
    button.rotationX(0f, 180f)
}

launch {
    //沿着Y轴旋转
    button.rotationY(0f, 180f)
}
  • 渐变动画
launch {
    //渐变透明
    button.alpha(1f, 0f)
}

组合多个动画

  • 顺序执行,只需要把需要执行的动画按照从上到下的顺序排列即可
launch {
    button1.translationX(0f, 300f)
    button2.alpha(1.0f, 0.1f)
    button3.rotation(0f, 180f)
    button4.scaleX(1.0f, 3f)

    //依次执行button1的位移动画,button2的渐变动画,button3的旋转动画,button4的缩放动画
}
  • 并列执行,只需要把需要同时运行的动画放进async块中即可
launch {
    val anim1 = async { button1.translationX(0f, 300f)  }
    val anim2 = async { button2.alpha(1.0f, 0.1f) }
    val anim3 = async { button3.rotation(0f, 180f) }
    val anim4 = async { button4.scaleX(1.0f, 3f) }
    awaitAll(anim1, anim2, anim3, anim4)

    //这次四个动画将会一起执行
}

最后

除此之外,你还能享受到所有协程的其他特性,例如使用 delay() 对动画进行延时,
使用 repeat() 对动画进行重复播放等等,发挥你的想象力把!

Github地址

推荐阅读更多精彩内容