Android 属性动画之自动优化的动画- ViewPropertyAnimator
ViewPropertyAnimator 可为View对象上的选择属性提供自动优化的动画。
应用场景如下
#1. 如果仅对View对象的一个或两个属性进行动画处理,则可以使用ObjectAnimator;ObjectAnimator调用的属性设置器已做好充分的准备,可以正确地设置属性并使视图无效。
##2. 如果同时对多个属性进行动画处理,或者如果您只想使用更方便的语法为特定属性设置动画,则ViewPropertyAnimator可能更适合该任务。
优点:可以为多个同时进行的动画提供更好的性能,因为它将优化 无效调用 以针对多个属性 仅发生一次,而不是每个动画属性独立地导致其自身无效。同样,其更易于使用,因为调用者只需告诉View对象要对其进行动画处理的属性以及要对其进行动画处理的值,并且该类将处理配置基础Animator类的详细信息,并且启动它。
cc:此类不是由调用方构造的,而是由将为其动画的View构造的。调用View.animate() 将返回对该视图相应的ViewPropertyAnimator对象的引用。
#####简单的说:前面有示例使用ObjectAnimator来实现的动画,ViewPropertyAnimator都可以实现。
ObjectAnimator实现:
//之前的实现转动view 90°
val animator = ObjectAnimator.ofFloat(view,"rotation", 0F, 90F)
animator.setDuration(2000)//动画时长
animator.interpolator = BounceInterpolator()//添加回弹动画,你还可以添加其他的效果哦
animator.start()
ViewPropertyAnimator实现:
//旋转
view.animate().rotation(90F).setDuration(2000).setInterpolator(BounceInterpolator()).start()
对比一下,简单明了,也就是ViewPropertyAnimator的优势,而且还可以同时对多个属性进行动画处理:
-
位移动画(translationX/translationY)
-
透明度动画(alpha)
-
旋转动画(rotation)
-
缩放动画(scale)
view.animate().translationX(-100F).translationY(100F)//平移
.alpha(0.5F)//透明度
.rotation(90F)//旋转
.scaleX(2F).scaleY(2F)//缩放
.setDuration(1000L)
.setInterpolator(BounceInterpolator())
.start()
运行效果:
###最后补充下属性设置:translationXBy()/translationYBy()/alphaBy()/rotationBy()/scaleXBy()/scaleYBy()
方法带By是变化多少,不带是变化至多少,这里应该很好理解。
推荐阅读
-
Android开发之图形图像与动画(三)Animation效果的XML实现
-
Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转
-
Android自定义view Path 的高级用法之搜索按钮动画
-
Android动画之xml实现属性动画
-
Android源码—属性动画的工作原理
-
Android动画之组合属性动画
-
Android自定义view之围棋动画效果的实现
-
jquery动画之升级版遮罩效果的图片走廊--带自动运行效果
-
Android 属性动画(Property Animation) ObjectAnimator的介绍
-
Android动画系列之属性动画的基本使用教程