Android 属性动画的基本理解(二)

读取这篇文章后,经过个人理解,写的:

http://blog.csdn.net/guolin_blog/article/details/43536355


ValueAnimator---ofObject()的基本使用:

ValueAnimator anim = ValueAnimator.ofObject(TypeEvaluator evaluator,Object... values);

方法说明:在上篇文章中说到ValueAnimator的ofInt()与ofFloat()方法,都是只能针对int类型或者浮点型数据的变化,而ofObject()是可以对应一切对象的变化;(ofInt()与ofFloat()只是ofObject()中的一种,系统已经封装好了的,特定的ofObject())

参数说明以及解释:

TypeEvaluator(类型计算器):这是一个接口,我们需要实现它;

第一  这个接口是的代码:

public interfaceTypeEvaluator<T> {

T evaluate(float var1,T var2,T var3);

}

evaluate方法的参数与解释:

var1:动画的进度;(一个0~1之间的数浮点型数据)

var2:动画的初始状态;

var3:动画的结束状态;

方法的功能:根据当前的进度,求出与之相对应的动画的状态;(有点类似根据X求Y的数学计算)

然后通过addUpdateListener实时监听不同时间对应的动画状态。

个人理解:每次Update的时候,系统会计算出当前动画的进度,然后调用TypeEvaluator的实现类,获得当前对象状态,并返回;

TypeEvaluator代码示例:

public classPointEvaluatorimplementsTypeEvaluator {

@Override

publicObjectevaluate(floatfraction,Object startValue,Object endValue) {

Point startPoint = (Point) startValue;

Point endPoint = (Point) endValue;

float x = startPoint.getX() + fraction * (endPoint.getX() - startPoint.getX());

float y = startPoint.getY() + fraction * (endPoint.getY() - startPoint.getY());

float zm;

if(fraction*100%10>5){

zm=fraction*100%10;

}else{

zm=10-fraction*100%10;

}

floatz =startPoint.getR()+zm*3;

Point point =newPoint(x,y,z);

returnpoint;

}

}


ObjectAnimator的ofObject()的使用方法:

ofObject(T target,Property property,TypeEvaluator evaluator,V... values);  

方法说明:ObjectAnimator是针对控件的属性,控件中必须有该属性的set与get方法,(当动画执行的时候会不断调用set方法);

参数说明:

target:用于指明具体是哪个控件(哪个类的实例);

property:指定具体要实现动画的属性;

TypeEvaluator evaluator:上面提到过,类型计算器,根据动画进度值求得对用的属性值,并返回 

values:用于指明属性数值的变化开始和结束数值;


ObjectAnimator与ValueAnimator的区别:

ValueAnimator:是针对数值变化,一般在addUpdateListener获得变化过程的数值,进行具体操作;

ObjectAnimator:针对具体类的实例中的属性进行操作(必须有该属性的get与set方法),继承来自ValueAnimator;


Interpolator的用法

Interpolator:被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

如何设置interpolator:

anim.setInterpolator(new AccelerateInterpolator(2f));

系统自带的interpolatro--来自http://blog.csdn.net/jason0539/article/details/16370405

AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速

AccelerateInterpolator  在动画开始的地方速率改变比较慢,然后开始加速

AnticipateInterpolator 开始的时候向后然后向前甩

AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值

BounceInterpolator   动画结束的时候弹起

CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线

DecelerateInterpolator 在动画开始的地方快然后慢

LinearInterpolator   以常量速率改变

OvershootInterpolator    向前甩一定值后再回到原来位置

如何实现自己的Interpolator:

public class Myinterpolator implements TimeInterpolator{

@Override

public float getInterpolation(float input) {

return result;

}}

anim.setInterpolator(new Myinterpolator());

方法以及参数说明:首先我们要实现接口TimeInterpolator;

说明:input:随着动画的运行而不断变化,不过它的变化是非常有规律的,就是根据设定的动画时长匀速增加,变化范围是0到1。

而我们经过运算逻辑,将数值变化后返回变化后进行变化的更改;当input与restule曲线斜率越高,动画执行速度就越快

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容