Android属性动画初探之ObjectAnimator

属性动画

ObjectAnimator

ObjectAnimator使用它的ofFloat方法,来构造一个属性动画

ObjectAnimator.ofFloat(Object target,String propName,float... valuse)
参数讲解

Object traget: 表示需要执行动画的目标类
String propName: 表示需要变化的属性名称;
float values :表示属性变化的值得范围

示例代码
ObjectAnimator.ofFloat(imageview,"translationX",0F,200F).setDuration(1000).start();

该段语句执行大概就是将 imageview这个对象向着X的方向从位置0移动到位置200,耗时1秒,

对于属性名称的书写,只要是Google对控件可以通过get和set得到的属性在这里都可以进行操作,但是在这里有几个常用的属性操作,介绍如下:
translationX/translationY: 沿着X轴/Y轴方向移动(指的是偏移量)
X/Y: 也是沿着X或者Y轴方向进行移动,但是区别是这里指的是你移动的相对于坐标的绝对值,也可以理解为移动到具体的坐标点
rotation:设置旋转属性
scaleX/scaleY:设置X轴或者Y轴方向上的缩放属性
alpha:设置透明度属性

另外需要注意的是,ObjectAnimator在调用start方法开始动画是一个异步的过程,也就是说如果这里我同时写了三个动画,调用start,会发现这三个动画是同时执行的,并不是一个顺序的执行过程,而如果需要按照特定的顺序来执行某个复杂的动画集合的话,这里就需要用到 AnimatorSet对象,通过调用AnimatorSet对象的playSequentially(),来控制动画的播放顺序
AnimatorSet还提供playTogether()、with()、after()等一系列方法来控制动画的播放顺序,通过控制控件的单一属性来操纵动画,可以达到更加精确好看的动画效果。

添加动画的监听事件

对属性动画添加监听事件可以通过addListener(AnimatorListener)来实现,里面有一系列的回调方法,如start,end,cancel等等,但是在实际使用中,我们可能并不需要这么多的事件回调,所以一般都会通过addListener(AnimatorListenerAdapter)来选择性的添加需要的回调方法,特别的实用方便

博客的最后以一个用属性动画来完成的自定义控件来作为结尾吧,这是一个弹出式的菜单控件,最早出现在path应用上,来看看效果图
Demo示例图

最后的最后,附上Demo的Github地址,由于好久没写博客了,这篇博客也是仓促之下写出来的,Demo中还有很多不足的地方,还望大家海涵

Demo地址:https://github.com/Fizzzzer/Android_Fizzer_PathMenu

猜你喜欢

转载自blog.csdn.net/u014697083/article/details/53591438