android中tween动画自定义
来源:互联网 发布:工程进度网络图软件 编辑:程序博客网 时间:2024/05/22 13:18
由TranslateAnimation来看自定义动画:
/** * Constructor to use when building a TranslateAnimation from code * * @param fromXDelta Change in X coordinate to apply at the start of the * animation * @param toXDelta Change in X coordinate to apply at the end of the * animation * @param fromYDelta Change in Y coordinate to apply at the start of the * animation * @param toYDelta Change in Y coordinate to apply at the end of the * animation */ public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) { mFromXValue = fromXDelta; mToXValue = toXDelta; mFromYValue = fromYDelta; mToYValue = toYDelta; mFromXType = ABSOLUTE; mToXType = ABSOLUTE; mFromYType = ABSOLUTE; mToYType = ABSOLUTE; }
构造函数中对移动信息做了初始化;
下面方法是根据interpolateTime,来计算出变换矩阵;
@Override protected void applyTransformation(float interpolatedTime, Transformation t) { float dx = mFromXDelta; float dy = mFromYDelta; if (mFromXDelta != mToXDelta) { dx = mFromXDelta + ((mToXDelta - mFromXDelta) * interpolatedTime); } if (mFromYDelta != mToYDelta) { dy = mFromYDelta + ((mToYDelta - mFromYDelta) * interpolatedTime); } t.getMatrix().setTranslate(dx, dy); }
重写的方法: @Override public void initialize(int width, int height, int parentWidth, int parentHeight) { super.initialize(width, height, parentWidth, parentHeight); mFromXDelta = resolveSize(mFromXType, mFromXValue, width, parentWidth); mToXDelta = resolveSize(mToXType, mToXValue, width, parentWidth); mFromYDelta = resolveSize(mFromYType, mFromYValue, height, parentHeight); mToYDelta = resolveSize(mToYType, mToYValue, height, parentHeight); }initialize方法是在View的下面方法中调用:
/** * Utility function, called by draw(canvas, parent, drawingTime) to handle the less common * case of an active Animation being run on the view. */ private boolean applyLegacyAnimation(ViewGroup parent, long drawingTime, Animation a, boolean scalingRequired) { Transformation invalidationTransform; final int flags = parent.mGroupFlags; final boolean initialized = a.isInitialized(); if (!initialized) { a.initialize(mRight - mLeft, mBottom - mTop, parent.getWidth(), parent.getHeight()); a.initializeInvalidateRegion(0, 0, mRight - mLeft, mBottom - mTop); if (mAttachInfo != null) a.setListenerHandler(mAttachInfo.mHandler); onAnimationStart(); }................................................}
interpolatedTime获得方式: 可以自定义插值器来 控制动画速度;
实现 Interpolator 接口;
0 0
- android中tween动画自定义
- Android:动画:tween动画
- android 动画 -- tween动画
- android tween、frame动画
- android tween动画
- Android Tween动画
- Android---Tween动画
- Android Tween动画
- Android Tween动画
- Android之Tween动画
- android-animation Tween动画
- Android----Tween动画实例
- android tween 动画效果
- android开发 - tween动画
- Android Tween动画
- Android Tween动画
- android动画Frame、Tween
- android tween动画
- KCU105自测
- jquery easyuid的subgrid子表点击一行的某个字段,不能首次获取到值(解决办法)
- Linux IO实时监控iostat命令详解
- ZOJ3844Easy Task
- DB2安装步骤和一些注意事项
- android中tween动画自定义
- JavaSE入门学习31:Java常用类之Math类
- maven混合编译java&scala
- ORA-12154: TNS: 无法解析指定的连接标识符
- [IMX6Q][Android5.1]移植笔记 --- 调试串口只能输出不能输入
- Bzoj3207:花神的嘲讽计划Ⅰ&&Bzoj2653:middle
- MySQL权限篇之ALTER
- 知乎架构
- [从头学数学] 第147节 数据的分析 小结与复习题