Android官方ApiDemo中animation部分代码要点整理
来源:互联网 发布:360极速浏览器 mac版 编辑:程序博客网 时间:2024/06/06 06:48
ApiDemo动画代码技术点整理
ApiDemo中com.example.android.apis.animation包内有10多个demo源码,主要是最新的属性动画,少量补间动画,还有布局动画及最新的Transitions框架,以下是这个包中各个demo源码的要点整理。在这个包之外还有很多动画,多是补间动画及相关布局动画,代码比较分散,搜索关键字是“animation”和布局相关的“Transition”等
AnimationCloning
clone
AnimatorSet,也可以clone
AnimationLoading
XML定义animator
ValueAnimator和ObjectAnimator的XML定义不同,后者要提供属性名
AnimationSeeking
bounceAnim.setCurrentPlayTime(seekTime);设置当前时间位置
AnimatorEvents
event:start/cancel/repeat/end
同一个对象,两个动画同时播放?说明动画是UI线程之外的异步线程?
BouncingBalls
AnimatorSet bouncer = new AnimatorSet();
bouncer.play(bounceAnim).before(squashAnim1);
bouncer.play(squashAnim1).with(squashAnim2);
bouncer.play(squashAnim1).with(stretchAnim1);
bouncer.play(squashAnim1).with(stretchAnim2);
bouncer.play(bounceBackAnim).after(stretchAnim2);
要点是多个动画的播放次序、依赖关系
参考
http://developer.android.com/reference/android/animation/AnimatorSet.html
http://developer.android.com/reference/android/animation/AnimatorSet.Builder.html
CustomEvaluator
public class XYEvaluator implements TypeEvaluator {
public Object evaluate(float fraction, Object startValue, Object endValue) {
XYHolder startXY = (XYHolder) startValue;
XYHolder endXY = (XYHolder) endValue;
return new XYHolder(startXY.getX() + fraction * (endXY.getX() - startXY.getX()),
startXY.getY() + fraction * (endXY.getY() - startXY.getY()));
}
}
LayoutAnimationsByDefault
使用系统缺省动画,无需再编写代码
android:animateLayoutChanges="true"
FixedGridLayout
最简的自定义布局
可以作为模板
自定义布局的复杂度取决于要支持多少布局参数,如果很少,或如此例是Fixed的,那么自定义布局很简单
LayoutAnimations
布局动画控制器android.animation.LayoutTransition
增加和删除两种事件,导致4种动画
KeyFrame
PropertyValuesHolder及对应的构造方法ObjectAnimator.ofPropertyValuesHolder
可变参数导致动画效果
被影响的child很多,但只设置一个动画,其他拷贝
LayoutAnimationsHideShow
似乎没有新东西
ListFlipper
绕Y轴(rotationY)或X轴旋转,而不是绕Z轴(rotation)旋转
3D到平面的投影系统
将View看成三维空间中的一个平面
MultiPropertyAnimation
带光影的ball的画法
ReversingAnimation
带光影的ball的画法
Rotate3dAnimation
public class Rotate3dAnimation extends Animation {
覆盖applyTransformation(),在其中实现自定义投影及动画
需要查询Camera和Matrix资料才能看明白
Camera ---- 照相机、投影机?
A camera instance can be used to compute 3D transformations and
generate a matrix that can be applied, for instance, on a Canvas.
http://developer.android.com/reference/android/graphics/Camera.html
Matrix类
补间动画
http://developer.android.com/reference/android/view/animation/package-summary.html
可能是补间动画的操作
mContainer.startAnimation(rotation);
Transition3d
在一个动画之后接另一个动画,通过container.post()来实现。注意post的参数是一个Runnable
private final class DisplayNextView implements Animation.AnimationListener {
public void onAnimationEnd (Animation animation) {
mContainer.post(new SwapViews(mPosition));
}
}
Transitions
Scene
TransitionManager
注,Transitions框架需要在Android 4.4以后版本中运行
0 0
- Android官方ApiDemo中animation部分代码要点整理
- Android 知识要点整理(12)----Animation(动画)
- Android系统ApiDemo中发散动画核心代码
- Android APIDemo 中蓝牙分析
- android例子程序(ApiDemo)简单分类整理
- ANDROID例子程序(ApiDemo)简单分类整理
- Android ApiDemo学习(四)Views——1 animation
- Android ApiDemo学习(五)Animation—— 2 Cloning
- Android ApiDemo学习(五)Animation—— 3 CustomEvaluator
- Android ApiDemo学习(五)Animation—— 5 Events
- ApiDemo - View -Animation 学习
- ApiDemo--Animation/Seeking
- Android官方文档之Animation
- Android ApiDemo学习(五)Animation—— 4 Default Layout Animation
- Android ApiDemo学习(五)Animation—— 6 Hide-Show Animation
- android--apidemo
- Android ApiDemo
- Animation要点
- use gdb to locate segment fault
- MC, MCMC, Gibbs采样 原理&实现(in R)
- Android开发之旅一ant打包依赖库(第三方库)
- TreeMap按照key排序
- PrintStream:
- Android官方ApiDemo中animation部分代码要点整理
- perl入门笔记(四)
- 线性表
- Android学习笔记(四十):Preference的使用
- jQuery (二) 效果学习
- 微笑通程序有时候退出再进去后点击食谱异常退出
- java timer时间调度调试理解
- .net开发连接Oracle数据库注意问题
- Phalcon之 表单(Forms)