您的位置:首页 > 其它

属性动画的一些说明

2016-01-28 16:08 197 查看
属性动画的一些说明:

1. ObjectAnimator 对象动画,当一个view同时拥有某一属性的getter、setter方法时,则可以使用该动画,来操作这一属性。

2. ValueAnimator 操作的范围比较广,通过Interpolator和TypeEvaluator得到某一时间内的值;再用监听器,监听值的变化,做相应的操作。

3. ValueAnimator 和ObjectAnimator(它是前者的子类)的静态的一些of方法,创建自身对象。

也可以new 一个无参的对象,再设置相应的values。

ofInt()、ofFloat()、ofObject()、ofPropertyValuesHolder()。

这几个方法的实现也就是new 一个无参的对象,再设置相应的values。

4. ValueAnimator 的调用流程:

a. 初始化ValueAnimator后,设置一个values。这时就有了一个PropertyViewHolder对象pvh。

可以直接调用setValues设置它PVH对象;或setInt|Float|ObjectValues

方法内部会生成一个PVH

PVH内部维护一个KeyframeSet和TypeEvaluator。PVH根据不同的values来初始化KeyframeSet和

TypeEvaluator实现方法中的startValue和endValue就从KeyframeSet中的Keyframe中获取

b. 设置TypeEvaluator,传递到pvh中。

c. 设置Interpolator。 ValueAnimator中默认的插入器为AccelerateDecelerateInterpolator

d. ValueAnimator的animationFrame(long currentTime),当有动画应该结束时返回true,否则返回false。

方法内,算出动画运行的时间比率fraction,再调用animateValue(float fraction)。

e. ValueAnimator的animateValue(float fraction),调用插入器,得到一个按某一规则得到的fraction,

再调用 pvh.calculateValue(fraction);pvh调用KeyframeSet的getValue(fraction);

KeyframeSet内部再调用TypeEvaluator的evaluate(fraction,T startValue, T endValue)。

startValue、endValue是通过Keyframe的getValue()来获取的。

f. evaluate(),方法内拿到了时间比率fraction,可以自行根据一定规则,返回value T。

g. 给ValueAnimator添加一个AnimatorUpdateListener。监听的回调方法:

onAnimationUpdate(ValueAnimator animation) {

T obj = (T)animation.getAnimatedValue();//取得计算器计算出的某段时间内的T值。

// 操作 obj

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: