实现原理:每次绘制视图时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/(文件夹)
本文详细介绍了Android中的各种动画实现原理,包括View动画如AlphaAnimation、RotateAnimation等,以及属性动画如ObjectAnimator、PropertyValuesHolder等。此外还介绍了自定义动画的方法及Android5.X引入的SVG矢量动画机制。
6632

被折叠的 条评论
为什么被折叠?



