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的坐标系中,然后进行硬件或软件的绘制。

 

posted @ 2018-06-06 18:32  lightverse  阅读(244)  评论(0编辑  收藏  举报