安卓动画小结
2016-02-17 11:46
225 查看
Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。
逐帧动画实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理;补间动画则是可以对View
进行一系列的动画操作,包括淡入淡出、缩放、平移、旋转四种。补间动画只能对view进行。
对于非View的对象进行动画,我们需要用到属性动画,比如说我们有一个自定义的View,在这个View当中有一个Point对象用于管理坐标,然后在onDraw()方法当中就是根据这个Point对象的坐标值来进行绘制的,我们可以对Point对象进行动画操作,那么整个自定义View的动画效果就有了。
补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性。比如说,现在屏幕的左上角有一个button,然后我们通过补间动画将它移动到了屏幕的右下角,当我们点击一下这个button,点击事件是绝对不会触发的,因为实际上这个按钮还是停留在屏幕的左上角,只不过补间动画将这个按钮绘制到了屏幕的右下角而已。而属性动画是可以正真的将button移动到了右下角,
点击效果可以被触发。
Android在3.0版本引入了属性动画。
主要有两个个类:ValueAnimator,ObjectAnimator。
ValueAnimator是根据时间,动画开始值和结束值来返回在该时间内的值,这样就完成开始值到结束值之间的平滑过渡。
它还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。
ObjectAnimator可以直接对任意对象的任意属性进行动画操作的,比如说View的alpha属性。ObjectAnimator低层的动画实现机制也是基于ValueAnimator来完成的。
ObjectAnimator现实动画常用方法:
ObjectAnimator.ofFloat(Object target,String propertyName,float... values)
ObjectAnimator.ofInt(Object target,String propertyName,float... values)
target目标View或其他对象,propertyName操作属性名称(),values操作值可以是多个。
操作属性值:
1)translationX
和 translationY:这两个属性控制了View所处的位置,它们的值是由layout容器设置的,是相对于坐标原点(0,0左上角)的一个偏移量。
2)rotation, rotationX 和 rotationY:控制View绕着轴点(pivotX和pivotY)旋转。
3)scaleX 和 scaleY:控制View基于pivotX和pivotY的缩放。
4)pivotX 和 pivotY:旋转的轴点和缩放的基准点,默认是View的中心点。
5)x 和 y:描述了view在其父容器中的最终位置,是左上角左标和偏移量(translationX,translationY)的和。
6)aplha:透明度,1是完全不透明,0是完全透明。
ViewPropertyAnimator在3.1系统后增加的一个类,view.animate()方法返回这个对象,该对象就可以调用各种属性动画方法。
view.animate().alpha(0.4f).setDuration().setListener().setInterpolater();
动画包含渐变、缩放、位移、旋转。可设置动画时间,过程监听,插值器。
ViewPropertyAnimator源码说明是:对多个动画组合在一起的需求,比较适合该类的使用。如果是一个或者两个动画使用ObjectAnimator比较好。
逐帧动画实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理;补间动画则是可以对View
进行一系列的动画操作,包括淡入淡出、缩放、平移、旋转四种。补间动画只能对view进行。
对于非View的对象进行动画,我们需要用到属性动画,比如说我们有一个自定义的View,在这个View当中有一个Point对象用于管理坐标,然后在onDraw()方法当中就是根据这个Point对象的坐标值来进行绘制的,我们可以对Point对象进行动画操作,那么整个自定义View的动画效果就有了。
补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性。比如说,现在屏幕的左上角有一个button,然后我们通过补间动画将它移动到了屏幕的右下角,当我们点击一下这个button,点击事件是绝对不会触发的,因为实际上这个按钮还是停留在屏幕的左上角,只不过补间动画将这个按钮绘制到了屏幕的右下角而已。而属性动画是可以正真的将button移动到了右下角,
点击效果可以被触发。
Android在3.0版本引入了属性动画。
主要有两个个类:ValueAnimator,ObjectAnimator。
ValueAnimator是根据时间,动画开始值和结束值来返回在该时间内的值,这样就完成开始值到结束值之间的平滑过渡。
它还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。
ObjectAnimator可以直接对任意对象的任意属性进行动画操作的,比如说View的alpha属性。ObjectAnimator低层的动画实现机制也是基于ValueAnimator来完成的。
ObjectAnimator现实动画常用方法:
ObjectAnimator.ofFloat(Object target,String propertyName,float... values)
ObjectAnimator.ofInt(Object target,String propertyName,float... values)
target目标View或其他对象,propertyName操作属性名称(),values操作值可以是多个。
操作属性值:
1)translationX
和 translationY:这两个属性控制了View所处的位置,它们的值是由layout容器设置的,是相对于坐标原点(0,0左上角)的一个偏移量。
2)rotation, rotationX 和 rotationY:控制View绕着轴点(pivotX和pivotY)旋转。
3)scaleX 和 scaleY:控制View基于pivotX和pivotY的缩放。
4)pivotX 和 pivotY:旋转的轴点和缩放的基准点,默认是View的中心点。
5)x 和 y:描述了view在其父容器中的最终位置,是左上角左标和偏移量(translationX,translationY)的和。
6)aplha:透明度,1是完全不透明,0是完全透明。
ViewPropertyAnimator在3.1系统后增加的一个类,view.animate()方法返回这个对象,该对象就可以调用各种属性动画方法。
view.animate().alpha(0.4f).setDuration().setListener().setInterpolater();
动画包含渐变、缩放、位移、旋转。可设置动画时间,过程监听,插值器。
ViewPropertyAnimator源码说明是:对多个动画组合在一起的需求,比较适合该类的使用。如果是一个或者两个动画使用ObjectAnimator比较好。
If only one or two properties on a View object are being animated, then using an * {@link android.animation.ObjectAnimator} is fine;
But if several properties are animated simultaneously, or if you just want a * more convenient syntax to animate a specific property, then ViewPropertyAnimator might be * more well-suited to the task.
相关文章推荐
- python3的文件操作2
- 基础训练 龟兔赛跑预测
- Jmeter做压力测试
- Android不规则图形点击提示选中不同区域
- 工作项、工作队列和工作者线程
- static作用(修饰函数、局部变量、全局变量)
- 常规功能和模块自定义系统 (cfcmms)—035开发日志(每个tab有各自模式window的备忘录)
- lombok在IntelliJ IDEA下的使用
- srm 534
- UBUNTU在登录界面一闪就退出
- CSS字间隔与字母间隔在文本样式中
- 用jQuery实现全选、全不选、反选
- PS电商产品后期修图之充电宝金属质感的体现教程
- 微信支付的那些坑
- 本地Git仓库和远程仓库的创建及关联 Coding.net
- 工厂三兄弟——工厂方法模式
- NSDate
- VB.NET WinForm获取运行程序用户名
- git 合并 二进制文件
- Unity3d Android无法加载assetbundle的问题