少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述Android动画原理-基础篇(认识View)相关的知识,希望能为你提供帮助。
一、动画是什么
【Android动画原理-基础篇(认识View)】Animation
is a dynamic medium in which images or objects are manipulated to appear as moving images. -来自维基百科
翻译:动画是动态的画面。
二、android中的动画
手机的屏幕是刷新的,正常情况下频率在60fps.也就是大约16ms界面会刷新一次。
android所有的动画的原理都是在这16ms之间,改变了显示内容的区域,从而达到动画的效果。
因为android的可视控件的绘制都是在View上完成的,所以理解View对理解动画有很大的帮助。
三、简述View的绘制过程
View的绘制过程分为三个步骤,测量、布局、绘制。
这三个词很容易理解,下面重点解释这三个步骤具体跟View产生了什么样的联系。
1.测量:
View的测量发生在measure,父布局调用child.measure方法来测量子view.而子view合适的反馈应该是测量完毕后通过setMeasureDimension方法设置好自己的大小,以便父view作参考。
View测量的过程常常发生在onMeasure方法中,测量完毕后调用setMeasureDimension实际是设置了View的mMeasureWidth和mMeasureHeight。
2.布局:
View的布局发生在layout中,同样父布局调用child.layout(l,r,t,b)并传递给child设定好的位置来让child设置自身的mLeft,mRight,mTop,mBottom。
一般情况会直接根据layout的建议来设置自己的mLeft,mRight,mTop,mBottom。
当然你可以忽略建议,自己设置,注意如果你改了mLeft,mTop,意味着你对父view对自己设置的左上角顶点不满意。
如果你改变了(mRight-mLeft) 和 (mBottom-mTop) 意味着你对父view对自己设置的大小不满意。--你应该已经知道此后View的getWidht 和 getHeight就是获取的前面两个减法运算的结果。
你可以在程序运行中随时改变它们,而这种场景就包括动画。
3.绘制
绘制发生的View的draw方法中。父View会通过drawchild会调用child的draw(x,x,x)三个参数的这个方法,其中有一个参数是canvas。
在draw(x,x,x)方法中,View默认先对canvas translate一下 到View的坐标系中,然后进行硬件或软件的绘制。
推荐阅读
- Android中使用commons-codec-1.6.jar 进行Base64编解码出现的问题
- 通过 AppiumDriverLocalSerivce 无法启动 appium service 问题
- Android+Struts2实现简单的前后台交互--Android网络编程
- Android 动态注册JNI函数
- [yum]Another app is currently holding the yum lock
- Android APP开发内容图片不显示
- Android SQLite数据库升级,怎么做(事物更改)
- 配置文件——App.config文件读取和修改
- Android自定义Dialog多选对话框(Dialog+Listview+CheckBox)