标签:包括 mat ima set 维基百科 dimens fps raw 默认
一、动画是什么
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的坐标系中,然后进行硬件或软件的绘制。
标签:包括 mat ima set 维基百科 dimens fps raw 默认
原文地址:https://www.cnblogs.com/vete-l/p/9145116.html