Android 属性动画的一些思考
2018-02-27 00:35
281 查看
Android 中有两大动画体系, 一个为3.0以前的补间动画,帧动画. 一个为3.0之后新增的属性动画. 由于旧的动画体系有诸多缺陷,使用过程有很多坑.所以当前流行的大多都是属性动画.
简单点讲,就是Android 将新的动画体系依托于每秒60帧的刷新同步信号(VSYNC), 在每次同步信号到来之后固定的增加了一步, 就是执行当前动画队列里的所有动画. 也就是每隔~16ms 会步进一次所有的动画.
属性动画是否流畅是动画最基本要考虑的重要指标. 根据属性动画的原理,实际上动画是否流畅取决于是系统当前是否有丢帧.
属性动画的焦点问题.
属性动画包含位移,旋转,缩放等.考虑一个最简单的情形, 当我们通过动画移动某个View到另外的位置时,此时点击什么位置才能响应其点击事件. 答案是: 点击移动到的新的目标位置能够响应View的点击事件.
同样的 缩放和旋转等操作, 也将同样的修改View的点击区域为新的View的边界区间.
那有人要问了, 经过动画后的View的 矩形区间是哪里呢? 答案是: View的坐标空间,矩形大小并未产生改变,还是在原来的位置. 我们可以打开 开发者选项, 并打开View布局边界显示,来查看每个View的位置空间.
那为什么点击事件响应会变化到新的空间呢? 这要从View的属性动画支持原理上来说了. View针对属性动画有一个TransformationInfo 结构用来保存动画所需的各属性. 同时有一个mMatrix 属性来保存当前属性变化的矩阵. 也就是说,针对View的动画最终会转换成对矩阵的运算. 同样的, 点击坐标也会相应的基于此矩阵进行变换, 最终还原成未动画时点击的位置坐标. 这样当我们点击动画后的View 位置时,实际坐标会转换成未动画时的位置坐标. 这样就可以简单判断点击是否落在View 矩形空间内. 以此来触发点击操作.
属性动画原理:
新增的属性动画并非是单独针对View动画的, 他是一组由值动画体系补充而形成的针对Object get/set属性进行插值操作的一系列API.简单点讲,就是Android 将新的动画体系依托于每秒60帧的刷新同步信号(VSYNC), 在每次同步信号到来之后固定的增加了一步, 就是执行当前动画队列里的所有动画. 也就是每隔~16ms 会步进一次所有的动画.
属性动画的注意事项:
属性动画的性能问题.属性动画是否流畅是动画最基本要考虑的重要指标. 根据属性动画的原理,实际上动画是否流畅取决于是系统当前是否有丢帧.
属性动画的焦点问题.
属性动画包含位移,旋转,缩放等.考虑一个最简单的情形, 当我们通过动画移动某个View到另外的位置时,此时点击什么位置才能响应其点击事件. 答案是: 点击移动到的新的目标位置能够响应View的点击事件.
同样的 缩放和旋转等操作, 也将同样的修改View的点击区域为新的View的边界区间.
那有人要问了, 经过动画后的View的 矩形区间是哪里呢? 答案是: View的坐标空间,矩形大小并未产生改变,还是在原来的位置. 我们可以打开 开发者选项, 并打开View布局边界显示,来查看每个View的位置空间.
那为什么点击事件响应会变化到新的空间呢? 这要从View的属性动画支持原理上来说了. View针对属性动画有一个TransformationInfo 结构用来保存动画所需的各属性. 同时有一个mMatrix 属性来保存当前属性变化的矩阵. 也就是说,针对View的动画最终会转换成对矩阵的运算. 同样的, 点击坐标也会相应的基于此矩阵进行变换, 最终还原成未动画时点击的位置坐标. 这样当我们点击动画后的View 位置时,实际坐标会转换成未动画时的位置坐标. 这样就可以简单判断点击是否落在View 矩形空间内. 以此来触发点击操作.
相关文章推荐
- Android 中关于属性动画的一些思考,或许能为你解决一定的性能问题
- Android 属性动画(Property Animation) 完全解析 (上)
- Android开发架构的一些思考
- Android APP 性能优化的一些思考
- android一些控键的属性
- Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解
- Android属性动画
- Android-属性动画
- Android开发总结笔记 属性动画(中) 4-2
- Android APP 性能优化的一些思考
- Android属性动画初探之ObjectAnimator
- Android中补间动画、属性动画效果演示
- android属性动画详解2
- android 属性动画初识(三)
- activity于AndroidManifest中的一些配置属性
- Android自定义控件:动画类----alpha、scale、translate、rotate、set的xml属性及用法
- 由内部类引发的Android内存泄漏的一些思考
- Android帧动画、补间动画、属性动画用法详解
- Android 属性动画进阶篇(篇2)
- Android 动画 —— 属性动画