Android-动画实现原理
一 实现原理:
图形变换通过矩阵实现。图形变换是图形学的基本知识,简单来说就是,每种变换都是一次矩阵运算。
在Android中,CAnvas类中包含当前矩阵,当调用Canvas.drawBitmap(bmp, x, y, paint)绘制时,Android会先把bmp
做一次矩阵运算,然后将运算的结果显示在Canvas上。这样,我们只需要不断修改Canvas的矩阵
并刷新屏幕,View里面的对象就会不停的做图形变换,动画就形成了

二 具体过程
1,view创建动画对象,设置动画属性,调用invalidate刷新屏幕,启动动画

2,invalidate方法触发了onDraw函数

3,在onDraw()函数中进行下面的步骤

4,调用动画的getTransformation方法,得到当前时间点的矩阵

5,将该矩阵设置为Canvas的当前矩阵

6,调用canvas的drawBitmap方法,绘制屏幕

7,判断getTransformation的返回值,为真,调用invalidate方法,

刷新屏幕进入下一帧,为假,动画结束
如下图:

三 动画运行模式
1,动画运行模式:使用的是独占模式
独占模式:
程序在主线程中进入一个循环,根据动画指令不断刷新屏幕,直到动画结束
中断模式:
另外开启线程

四 动画使用的常用类
每个动画都重载了父类的applyTransformation方法,这个方法
会被父类的getTransformation方法调用,另外每个动画还有个initialize方法,完成初始化工作
1,Animation
使用的基本类,4中补间动画都继承它

2,Interpolater类
动画的插入器类,用于描述动画的过度效果

3,Transformation类
这个类记录了仿射矩阵Matrix,动画每触发一次,就会对原来的矩阵做一次运算
View的Bitmap与这个矩阵相乘即可实现相应的操作(旋转,平移,缩放)

这个类封装了矩阵和alpha值,有两个重要的成员,一是mMatrix,还有事mAlpha

五 为Activity指定动画效果
通过xml配置
1,修改Activity的Theme
在style.xml中定一Activity的切换动画,一般定义四种
左边进出,右边进出。

<style name="AnimationActivity" parent="@android:style/Animation.Activity"><item name="android:activityOpenEnterAnimation">@anim/push_left_in</item><item name="android:activityOpenExitAnimation">@anim/push_left_out</item><item name="android:activityCloseEnterAnimation">@anim/push_right_in</item><item name="android:activityCloseExitAnimation">@anim/push_right_out</item></style>

2,然后在themes.xml中设置主题风格为style.xml中定义的xml

<style name="ThemeActivity"><item name="android:windowAnimationStyle">@style/AnimationActivity</item><item name="android:windowNoTitle">true</item></style>

3,在AndroidManifest文件中为Activity指定theme

<activity android:theme="@theme/ThemeActivity">

使用代码设定
可调用overridePendingTransition实时修改Activity的切换动画
但是需要注意的是:该函数必须在调用startActivity()或者finish()后立刻调用,切只有效一次

更多相关文章

  1. Android的一个技巧
  2. Android(安卓)ListView那些事
  3. Android学习笔记(7)---单元测试与日志输出
  4. Android中跨进程通信的IPC机制(Binder框架)
  5. Android(安卓)AIDL 实现浅析
  6. Android(安卓)8.1 中Systemui中的常见修改(五)长按Home键唤起Googl
  7. [置顶] Android中AIDL实现进程通信(附源码下载)
  8. android:TextView中的文本链接之--链接的几种方式
  9. 如何将打开res raw目录中的数据库文件?

随机推荐

  1. android 扫描SD卡与系统文件
  2. (备忘)Android app中调用启动其他应用(系统
  3. Android帮助文档(第二部分)开发工具
  4. 【Android】安卓开机禁止锁屏,禁止屏幕休
  5. Android 时间、日期处理 DateUtils、Syst
  6. Android自动提示文本框(AutoCompleteText
  7. Android 设置 横屏 竖屏
  8. Android官方dip值到pix值转换:dip2pix,dip2
  9. MAN
  10. [6410][android]给android cupcake移植FB