对属性动画ObjectAnimator.ofObject方法的学习和理解

关于对属性动画
ObjectAnimator.ofObject(view, "position", new PointEvaluator(), pStart, pEnd);
方法的学习和理解,做个总结,也当做笔记记在这里,遗忘的时候以便查阅,也希望能帮助正在学习这块知识的同学。


这个方法的主要作用是根据一定的规则对目标对象的某个具体属性进行改变,从而使目标对象实现与该属性相关的动画效果。
参数的讲解:
第一个参数:动画的实施对象
第二个参数:关键词, 在动画的实施对象中必须要有一个 "set关键词()"的方法,该关键词也是动画实施对象的一个属性。比如某view有一个setColor()方法,"color"为某view的一个属性。在动画实施过程中,会不停的调用这个set方法给该属性赋新的值。
第三个参数:补间器, 实现TypeEvaluator接口,实现evaluate方法,在方法中给出属性改变的具体实现过程,以达到预期动画效果。这个步骤是整个属性动画的精髓所在,它反映了属性变化的具体过程,也是我们程序员施展自己才华的地方!
第四个参数:属性集合,即属性的开始点,中途变化点,结束点的具体值。是在evaluate方法中计算属性值变化的依据数据。(evaluate方法中有两个参数,一头一尾,如果这里刚好也两个参数则一一对应,但是多个的情况暂时没搞清楚)。

官方文档参数的解释
Parameters
target The object whose property is to be animated. This object should have a public method on it called setName(), where name is the value of the propertyName parameter.
propertyName The name of the property being animated.
evaluator A TypeEvaluator that will be called on each animation frame to provide the necessary interpolation between the Object values to derive the animated value.
values A set of values that the animation will animate between over time.

ValueAnimator.ofObject(evaluator, values)方法参数含义与ObjectAnimator.ofObject (target, propertyName, evaluator, values)中参数基本相同,只是ValueAnimator不指定具体对象,只设置属性值变化过程,更加灵活,使用空间更大一些。

另:附一些常用的属性动画使用方法
旋转动画:
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "rotation", 0f, 360f);  
animator.setDuration(5000);  
animator.start();
x轴平移动画:
float curTranslationX = textview.getTranslationX();  
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "translationX", curTranslationX, -500f, curTranslationX);  
animator.setDuration(5000);  
animator.start();
缩放动画:
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "scaleY", 1f, 3f, 1f);  
animator.setDuration(5000);  
animator.start();
透明度动画:
ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f);
animator.setDuration(5000);  
animator.start();    
组合动画:
ObjectAnimator moveIn = ObjectAnimator.ofFloat(textview, "translationX", -500f, 0f);  
ObjectAnimator rotate = ObjectAnimator.ofFloat(textview, "rotation", 0f, 360f);  
ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);  
AnimatorSet animSet = new AnimatorSet();  
animSet.play(rotate).with(fadeInOut).after(moveIn);  
animSet.setDuration(5000);  
animSet.start();


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值