Object Animator和Tween Animation

关于安卓的动画。
分类就不详叙了,以前我只知道Frame动画、Tween动画,还耳闻过属性动画,但因为一直没用到动画,所以没去研究。
目前项目中涉及到了动画,所以做了个简单的总结,主要针对于Object Animator和Tween Animation的区别。
其实要实现的效果也很简单,无非就是Alpha(透明度)、Translate(位移)、Rotate(旋转)、Scale(放缩),
拿简单的Translate(位移)来举例:
至于为什么拿位移动画来举例,因为它的特殊性,后面会说到。

(1).Tween Animation是这么写的:

                //声明一个位移动画,并赋值 X轴从0 -> -50 , Y轴从 0到 600. 
                Animation mTranslate = new TranslateAnimation(0, -50, 0, 600);
                //动画时间设置为2秒
                mTranslate.setDuration(2000);
                //Interpolator的效果百度一查一大堆,就不说了,就是加速啊,减速啊,反弹啊之类的效果
                mTranslate.setInterpolator(new BounceInterpolator());
                //给View(一般来说是控件)设置上刚才定义的位移动画
                View.startAnimation(mTranslate);

效果就是从View的原位置斜向下位移(带BounceInterpolator效果,反弹三次后静止),


(2).Object Animator是这么写的:

                //声明一个属性动画,并赋值,注意,View是在这里被当做参数赋值的
                //同时要注意的是translationY,这个参数可以替换为其他效果,rotateY、rotateX啊等等
                Animator mAnimator = ObjectAnimator.ofFloat(view, "translationY", 0, 600);
                mAnimator.setDuration(2000);
                mAnimator.setInterpolator(new BounceInterpolator());
                mAnimator.start();

效果就是从View的原位置正向下位移(带BounceInterpolator效果,反弹三次后静止),


那其实就这么多内容我为什么还要写一篇文章记录下来呢?

原因很简单:

Animator和Animation是有一些细微的效果差异的。
就拿上面的例子来说,区别在于
a 、(1)中的View动画效果执行结束后,会回到View本来的位置,即开始的位置,而(2)中的View动画执行后,则会停留在动画结束的位置
b、(1)中的View在动画执行过程中,点击View的原本位置,即开始的位置(注意,位置动画执行过程中,这个位置已经没有图像了),点击仍会触发动画。效果就是—>View在执行的动画会被打断,然后重新开始执行。
而(2)中的View在动画执行过程中,执行动画的View的位置是在变化的,你要点击到在运动中的View,才可以中断动画,让其重新执行动画过程。
c、 但是两者都稍有不协调的地方在于,Animation不会结束在动画结束的位置,而是在动画结束后突兀的出现在原本的开始位置。 而Animator 虽然结束在正确的位置,但再次触发动画的时候,则是从最初那次的动画开始位置执行,并不是把结束位置当做新的开始位置,同样会显得很突兀。
当然,这也可以被当做特性被使用,主要依据项目本身不同的需求而做相应的策略处理。


文章写到一半才想起,之所以写这篇文章,是因为之前搜文章都没搜出满意解释不同动画区别的解释。
本文也只是做了一个简单的比较,并没有对其他动画做一些基本使用的介绍,不过相信机智的你通过其他文章一定能掌握到的。
刚才重新搜了一下,发现了这篇文章,觉得很好,也贴给大家。

http://www.tuicool.com/articles/zM7RnqB [Android 动画]简要分析一下Animator 与 Animation

PS后话:
之前写文章都是当做给自己记笔记,格调太低,这是迄今为止我真正用心手码的一篇文章,为了自己,也为了各位有缘的小伙伴,
我想说的是,之前写文章的态度不够严谨,从这篇文章开始,我要用心写哈哈,毕竟,我们码农是可以有洁癖的不是吗?要慢慢打磨自己的项目,自己的文章,一切都当亲儿子对待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值