(八)Android的动画机制

本文详细介绍了Android中的各种动画实现原理,包括View动画如AlphaAnimation、RotateAnimation等,以及属性动画如ObjectAnimator、PropertyValuesHolder等。此外还介绍了自定义动画的方法及Android5.X引入的SVG矢量动画机制。
实现原理:每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,若动画未完成,就继续调用invalidate函数,启动下次动画来完成绘制。

视图View动画:AlphaAnimation透明度/淡入淡出动画、RotateAnimation旋转动画、TranslateAnimation位移动画、ScaleAnimation缩放动画、              AnimationSet集合。View动画建议采用XML定义,可读性更好。 帧动画也属于View动画,易引起OOM。

Android 3.0之后提出属性动画。 
属性动画
Animator  ObjectAnimator、PropertyValuesHolder、



ValueAnimator:


AnimatorSet:


View的animate方法,其实是属性动画的简写方式:


Android的布局动画:



自定义动画:
只需实现applyTransformation的逻辑就好。通常情况下还需覆盖父类的initialize方法来实现一些初始化工作。结合Camera类实现3D效果,他封装了OpenGL的3D动画。在initiabize方法中初始化。


Android 5.X SVG 矢量动画机制
     提供两个API支持新的SVG:VectorDrawable:


AnimatedVectorDrawable:用来连接静态的VectorDrawable和动态的objectAnimator.

<vector>元素的矢量资源,在res/drawable/(文件夹)
<animated-vector>元素的矢量资源动画,在res/drawable/(文件夹)
< objectAnimator>元素的一个或多个对象动画器,在res/anim/(文件夹)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值