用ValueAnimator来制作动画
ValueAnimator类通过设定动画过程中的int、float或颜色值,来指定动画播放期间的某些类型的动画值。通过ValueAnimator类的一个工厂方法来获取一个ValueAnimator对象:ofInt()、ofFloat()、ofObject()。例如:
ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
animation.setDuration(1000);
animation.start();
在这段代码中,当start()方法开始执行时,ValueAnimator对象会在1000毫秒的动画期间内,在0和1之间开始计算动画的值。
还可以通过下面的做法来指定自定义的动画类型:
ValueAnimator animation = ValueAnimator.ofObject(new MyTypeEvaluator(), startPropertyValue, endPropertyValue);
animation.setDuration(1000);
animation.start();
在这段代码中,在start()方法开始执行的时候,ValueAnimator对象会在1000毫秒的动画期间内,使用由MyTypeEvaluator对象提供的逻辑,在startPropertyValue和endPropertyValue之间,开始计算动画的值。
但是,在前一个代码片段中,不会对一个对象形成实际的影响,因为ValueAnimator对象没有直接在对象或属性上执行操作。这么做的最大可能是用这些计算值来修改那些想要动画效果的对象。通过定义ValueAnimator类中响应的事件监听器,来处理动画执行期间的重要事件,如帧更新等。当监听器执行的时候,就能够通过调用getAnimateValue()方法获得指定帧的刷新的计算值。有关监听器的更多信息,请看“动画监听器”。
用ObjectAnimator来制作动画
ObjectAnimator类是ValueAnimator类的一个子类,并且把时序引擎和ValueAnimator对象的计算值组合到一起,让目标对象的命名属性具备动画能力。这样使得让任意对象具有动画效果变的更加容易,如不在需要实现ValueAnimator.AnimatorUpdateListener接口,因为被动画的属性会自动的更新。
实例化一个ObjectAnimator对象与实例化一个ValueAnimator对象类似,但是,它还需要跟动画期间的参数一起,指定动画对象和对象动画属性(用一个字符串)的名字:
ObjectAnimator anim = ObjectAnimator.ofFloat(foo, "alpha", 0f, 1f);
anim.setDuration(1000);
anim.start();
要正确的更新ObjectAnimator对象的属性,必须做以下事情:
1.动画效果的属性必须有一个set<propertyName>格式的设置器方法。因为在动画处理期间,ObjectAnimator对象会自动的更新对应的动画效果属性,所以它必须使用这个设置器方法来访问对应的属性。例如,如果属性名是foo,那么就需要有一个setFoo()方法,如果这个设置器方法不存在,你有三种选择:
A.如果你权利这么做,就要在这个类中添加设置器方法;
B.使用一个你有权改变的包装器类,并且这个包装器能够用一个有效的设置方法来接收动画值,而且还要能够把这个值转发给初始对象。
C.使用ValueAnimator类来代替。
2.如果你只在ObjectAnimator类的一个工厂方法中指定了一个values…参数,那么该值会被假定为动画的结束值。因此,该对象的动画效果属性就必须要有一个获取方法,用于获得动画的开始值。这个获取方法必须使用get<propertyName>()格式。例如,属性是foo,就必须有一个getFoo方法。
3.动画属性的获取(如果需要)和设置方法必须操作相同类型的指定给ObjectAnimator对象开始和结束值。例如,如果构建一个下面这样的ObjectAnimator对象,就必须要有targetObejct.setPropName(float)和targetObject.getPropName(float)方法:
ObjectAnimator.ofFloat(targetObject,"propName",1f)
4.根据属性或对象上的动画效果,可能需要调用View对象上的invalidate()方法,在更新动画效果时,强制屏幕重绘自己。在onAnimationUpdate()回调方法中做这件事情。例如,一个绘图对象的颜色属性的动画效果,在队形重绘自己时,才会将变化结果更新到屏幕上。在View对象上的所有的属性的设置器,如setAlpha()和setTranslationX()会正确的让View对象失效,因此在调用这些方法设置新的值时候,你不需做失效这件事。有关监听器的更多信息,请看“动画监听器”。
分享到:
相关推荐
Android Animation Detailed Tutorial / Android 动画详尽教程 ... Property Animation / 属性动画 English explanation can go to read this article Ⅳ. Ripple Effect / Touch Feedback /
代码为博客示例代码:http://blog.csdn.net/lmj623565791/article/details/38067475 有问题请博客留言
比较全的android动画例子,包括基础的tween animation,这个就不必说了,还有比较新的属性动画:property animation
Android学习之 属性动画Property Animation
Android 动画 Animation Demo
博客示例代码:http://blog.csdn.net/xiaohao0724/article/details/54863112
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/38067475 有问题博客留言
android中属性动画,暂停,播放停止功能的实现
android-animation-collections ShakeAnimation 仿IOS卸载的晃动动画&文本标签编辑的晃动动画 PropertyAnimation 属性动画、补间动画测试
Android动画之Animation的使用。包括变换动画Tween Animation,帧动画Frame Animation,布局动画Layout Animation,属性动画Property Animation
android属性动画的 运用demo
博客实例代码:http://blog.csdn.net/xiaohao0724/article/details/54863112
Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有...
很全的Android动画的Demo TweenAnimation DrawableAnimation PropertyAnimation都有很详细的实现
android的属性动画示例 详细介绍了 objectanimator animationset等的使用
android的基本动画分为四种:Tween Animation 变换动画、Frame Animation 帧动画、Layout Animation 布局动画、Property Animation 属性动画。
* Property Animation :属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的...
Android中的动画分为视图动画(View Animation)、属性动画(Property Animation)以及Drawable动画。从Android 3.0(API Level 11)开始,Android开始支持属性动画,本文主要讲解如何使用属性动画。关于视图动画可以...