ObjectAnimator
ValueAnimator缺点:只能对数值进行动画运算。比如需要对控件进行操作需要,监听数值变化,在监听中对控件进行操作,比较麻烦。
为了直接与控件相关联,ObjectAnimator应运而生。
ObjectAnimator也重写了ofInt()、ofFloat()等
以ofFloat(View target,String propertyName,float…value)为例;
target:表示目标控件
propertyName:表示用改变控件的那个属性值比如:alpha(透明度)、rotation(旋转)。
value:表示属性的开始到结束区间
注意:这些属性值并不是根据控件xml属性来改变的(比如Textview没有alpha等属性,View也没有),而是通过其对应的set…()来改变控件中对应的值
ObjectAnimator与ValueAniamtor过程:
- 首先插值器参数动画时间进度(动画时间进度0-1)计算出动画数值进度百分比
- Evaluator计算出当前确定的值
前两步和ValueAniamtor一样
- 通过将属性值拼接成set…()函数,在通过反射找到该控件的的se…()函数,改变其值;
ObjectAnimator根据属性值拼接对应的set函数名