7.3 Android Framework - PropertyAnimation
2016-04-03 10:22
239 查看
API11 引入的特性,
语法
set对应AnimatorSet
android:ordering 一起播放还是顺序播放
objectAnimator对应ObjectAnimator
android:propertyName 属性动画作用对象的属性名
android:duration 动画时长
android:valueFrom 属性的起始值
android:valueTo 属性的结束值
android:startOffset 动画的延迟时间, 动画开始后延迟多少毫秒才真正动画
android:repeatCount 动画重复次数, -1是无限循环
android:repeatMode 动画重复的模式
android:valueType 表示android:propertyName指定的属性的类型
animator对应ValueAnimator
插值器和估值器
+ 插值器 根据时间流逝的百分比计算当前属性值改变的百分比
+ 估值器 根据插值器计算的属性值的百分比计算属性的实际值
属性动画的监听器
给任意属性做动画
- 给对象添加getter和setter, 如果有权限的话
- 用一个类包装原始对象, 间接提供getter和setter
- 使用ValueAnimator
属性动画的原理
属性动画根据传递的属性的初始值和最终值, 以动画的效果多次调用set方法, 随着时间推移, 把插值器和估值器的计算结果传递给set, 使其越来越接近最终值. 达到动画效果.
注意的问题
1. OOM - 尽量避免帧动画
2. 内存泄漏 - 在Activity退出时要及时停止相关动画
3. 兼容性问题
4. View 动画完成后, 无法隐藏了, 需要调用
5. 不要使用px
6. 动画元素的交互 - 可能实际位置不是看到的位置
7. 硬件加速 - 提高流畅性
ValueAnimator,
ObjectAnimator,
AnimatorSet
语法
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering=["sequentially" | "together"]> <objectAnimator android:duration="int" android:propertyName="string" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["restart" | "reverse"] android:valueType=["floatType" | "intType"] /> <animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["restart" | "reverse"] android:valueType=["floatType" | "intType"] /> </set>
set对应AnimatorSet
android:ordering 一起播放还是顺序播放
objectAnimator对应ObjectAnimator
android:propertyName 属性动画作用对象的属性名
android:duration 动画时长
android:valueFrom 属性的起始值
android:valueTo 属性的结束值
android:startOffset 动画的延迟时间, 动画开始后延迟多少毫秒才真正动画
android:repeatCount 动画重复次数, -1是无限循环
android:repeatMode 动画重复的模式
android:valueType 表示android:propertyName指定的属性的类型
animator对应ValueAnimator
插值器和估值器
+ 插值器 根据时间流逝的百分比计算当前属性值改变的百分比
+ 估值器 根据插值器计算的属性值的百分比计算属性的实际值
属性动画的监听器
public static interface AnimatorListener { void onAnimationStart(Animator a); void onAnimationEnd(Animator a); void onAnimationCancel(Animator a); void onAnimationRepeat(Animator a); } // 每播放一帧都会调用一次 public static interface AnimatorUpdateListener { void onAnimationUpdate(ValueAnimator a); }
给任意属性做动画
- 给对象添加getter和setter, 如果有权限的话
- 用一个类包装原始对象, 间接提供getter和setter
- 使用ValueAnimator
属性动画的原理
属性动画根据传递的属性的初始值和最终值, 以动画的效果多次调用set方法, 随着时间推移, 把插值器和估值器的计算结果传递给set, 使其越来越接近最终值. 达到动画效果.
注意的问题
1. OOM - 尽量避免帧动画
2. 内存泄漏 - 在Activity退出时要及时停止相关动画
3. 兼容性问题
4. View 动画完成后, 无法隐藏了, 需要调用
View#clearAnimation
5. 不要使用px
6. 动画元素的交互 - 可能实际位置不是看到的位置
7. 硬件加速 - 提高流畅性
相关文章推荐
- [Android]活动的启动模式
- Android高性能ORM数据库DBFlow入门教程
- Android多级树形菜单并且支持多选功能
- android MediaCodec 音频编解码的实现——转码
- 7.3 Android Framework - LayoutAnimation
- 海康威视Android SDK,并非萤石Android SDK
- Android开发中Handler的经典总结
- Android做一个显示电量的小控件
- android Java 提交数据到服务器的两种方式中四种方法
- 7.2 Android Framework - FrameAnimation
- 7.1 Android Framework - ViewAnimation
- Android签名相关知识整理
- android 自己定义组合控件
- Android 第九天重置版_Contentprovider_注意事项
- Android推送技术研究
- Android 第九天重置版_Contentprovider
- android studio快捷键
- Android 光线传感器的调用
- 坚定信念走下去
- Android中WebView使用3,html掉android中的方法webView调用js中的方法