您的位置:首页 > 移动开发 > Android开发

Android属性动画(二) ------ 站在巨人的肩膀上学习总结

2016-05-04 23:07 423 查看
属性动画的高级用法

详情请看,郭林大神博客 /article/1562103.html

前奏:TypeEvaluator

TypeEvaluator的作用就是告诉系统如何从初始值过渡到结束值,不管是ValueAnimator还是ObjectAnimator的
ofFloat()方法,其实他的内部系统内置了一个FloatEvaluator,从而实现初始值过渡结束值,FloatEvalutor的代码
public class FloatEvaluator implements TypeEvaluator {
public Object evaluate(float fraction, Object startValue, Object endValue) {
float startFloat = ((Number) startValue).floatValue();
return startFloat + fraction * (((Number) endValue).floatValue() - startFloat);
}
}

总结:FloatEvaluator实现了TypeEvalutor接口,重写evaluate()方法,该方法的三个参数
1,fraction 非常重要 表示动画的完成度,根据它计算当前动画的值应该是多少
2,起始值  3,结束值

当前动画值 = (结束值 - 起始值)*fraction +起始值


一:ValueAnimator的高级用法

ValueAnimator和ObjectAnimator的ofFloat(),ofInt()方法,分别是对浮点型和整形数据进行动画的操作,但是他们还有一个ofObject()方法
这个方法是对任意一个对象信息动画的操作,对象的动画操作很复杂,因为系统不知道如何从初始对象到结束对象,
所以现在我们需要自定一个MyEvaluator实现TypeEvaluator 从而可以告知系统如何进行过度(自定义Evaluator实现过度,很重要哦)

如何使用?
ValueAnimator anim = ValueAnimator.ofObject(new MyPointEvaluator(), point1, point2);
anim.setDuration(5000);
anim.start();   //如此,开始对象动画


二:ObjectAnimator的高级用法

补间动画只能实现四种动画效果,功能很死,没有扩展性可言, 比如我们想让View进行颜色的动态改变,只能通过属性动画实现

ObjectAnimator内部工作机制通过get和set来确定寻找的属性,然后自定义ColorEvaluator,然后调用即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: