ValueAnimator简介
ValueAnimator属于property animation
Propertity Animation类似于 tween动画,区别在于ValueAnimator修改的是真实属性。
在Android 3.0中给View增加了一些参数并对这些参数增加了相应的getter/setter函数(ObjectAnimator要用这些函数改变这些属性):
• translationX,translationY:转换坐标(control where the View is located as a delta from its left and top coordinates which are set by its layout container.)
• rotation,rotationX,rotationY:旋转,rotation用于2D旋转角度,3D中用到后两个
• scaleX,scaleY:缩放
• x,y:View的最终坐标(utility properties to describe the final location of the View in its container, as a sum of the left and top values and translationX and translationY values.)
• alpha:透明度
ValueAnimator绘制刷新
2D动画执行速度快,是因为它只是重绘需要刷新的部分,不会从根到叶全部刷新重绘。
传统的动画和属性动画流程区别如下图:
具体的通过下面例子来做说明:
1.layout中包含2个视图,给其中一个做scaleX动画。
如果用传统的Animation,Log显示如下:
02-24 02:13:47.892: E/XXX(954): MyImageView:onDraw
02-24 02:13:47.892: E/XXX(954): MyImageView:dispatchDraw
02-24 02:13:47.902: E/XXX(954): MyViewGroup:dispatchDraw
02-24 02:13:47.922: E/XXX(954): MyTextView:onDraw
02-24 02:13:47.922: E/XXX(954): MyTextView:dispatchDraw
循环直至结束
如果用ValueAnimator,Log显示如下:
02-24 02:14:53.522: E/XXX(1000): MyImageView:onDraw
02-24 02:14:53.522: E/XXX(1000): MyImageView:dispatchDraw
02-24 02:14:53.532: E/XXX(1000): MyViewGroup:dispatchDraw
循环直至结束
2.layout中包含2个视图,给其中一个做translate动画,让其覆盖在另一个视图之上。
如果用传统的Animation,Log显示如下:
02-24 02:11:26.442: E/XXX(909): MyImageView:onDraw
02-24 02:11:26.442: E/XXX(909): MyImageView:dispatchDraw
02-24 02:11:26.442: E/XXX(909): MyViewGroup:dispatchDraw
02-24 02:11:26.461: E/XXX(909): MyTextView:onDraw
02-24 02:11:26.461: E/XXX(909): MyTextView:dispatchDraw
如果用ValueAnimator,Log显示如下:
02-24 02:08:51.262: E/XXX(862): MyImageView:onDraw
02-24 02:08:51.262: E/XXX(862): MyImageView:dispatchDraw
02-24 02:08:51.272: E/XXX(862): MyViewGroup:dispatchDraw
02-24 02:08:51.302: E/XXX(862): MyImageView:onDraw
02-24 02:08:51.302: E/XXX(862): MyImageView:dispatchDraw
02-24 02:08:51.312: E/XXX(862): MyViewGroup:dispatchDraw
02-24 02:08:51.332: E/XXX(862): MyTextView:onDraw
02-24 02:08:51.332: E/XXX(862): MyTextView:dispatchDraw
Log结果分析:
如果使用普通的tween动画,不管做动画的view是否影响到其它的view,都会重新绘制所有的view。
如果使用属性动画,在动画view不影响其它view的情况下,只重新绘制动画view,如果动画view影响到了其它的view,那么会重新绘制动画view和受影响的view。
具体测试代码见附件:
- 大小: 22.7 KB
- 大小: 15.7 KB
- 大小: 17.5 KB
分享到:
相关推荐
android3.0以后3种动画.pdf
android3.0以后3种动画参考.pdf
nineoldandroids.jar 兼容Android3.0以下的版本
Android 3.0 Animations Beginner’s Guide Android 3.0 中动画的操作
大家都知道属性动画是在android 3.0以后才开始支持的,而3.0以下想要用属性动画,就需要额外的支持,本项目就是为3.0以下的属性动画提供支持
android NineOldAndroids3.0+动画源码.rar
* Property Animation :属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的...
ViewPager的源码以及Android3.0一下使用属性动画的Jar包。
安卓Android源码——NineOlds3.0+动画.zip
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
android 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,...
自定义View的模式显示,自定义图片加载方式,可自定义索引UI、ProgressView,更加灵活,易于扩展,同时也适用于RecyclerView、ListView的横向和纵向列表模式,最低支持版本为Android 3.0及以上...功能图片的基本缩放...
环境:Windows XP SP3、JDK 6、Android SDK 3.0、Eclipse-galileo 3.4 使用步骤: 1、下载解压之后,使用IDE导入工程 2、创建android 2-2 AVD 3、运行configuration 4、分别根据luanch按钮来选择三个动画方式 5、...
Android下21中fragment切换的动画,效果非常棒,基于Android3.0以上
本文使用属性动画完成,说到属性动画,肯定要提到 JakeWharton大神写的NineOldAndroids动画库,如果你的app需要在android3.0以下使用属性动画,那么这个库就很有作用了,如果只需要在高版本使用,那么直接使用系统...
我的Android开发之旅(二):Android三种动画效果的浅入之View动画前言View动画Animation类1. 平移动画2....属性动画是在API11(Android3.0)引进的动画效果,它是通过动态地改变对象的属性从而达到动画
Android项目源码凡信3.0最强仿微信更新直播和红包,提供所有源码!!
本文目录属性动画概述属性动画用法对象动画(ObjectAnimator)方法1:Java代码实现对象动画方法2...Android官方在Anrdoid 3.0以后又推出了一种新的动画即属性动画,既然前面的帧动画和补间动画能帮助我们实现大部分的An
3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable ...