Android UI的一些自我思考

学习Android已经很长一段时间了,一只都懒的去写点东西记录自己对这块的理解,由于公司的变动突然有了大把的时间,就来写一写自己对这块的理解以便加深下印象。

最初学习UI的时候,眼里只能看到单一控件,看不到View的整个大局,只知道这个空间加上去什么效果那个控件加上去又有什么样的效果,不过随着使用的增多,对Android UI有了一个整体的认识,感觉UI的使用就像往房子里摆放家具一样,你可以采用不同的方式来放。

你可以采用相对的方式来放,比如你先放一个床,然后在其两边相对的摆放上床头柜(类比于Android中的RelativeLayout),而床头柜上面还可以再放一个台灯(类比于FrameLayout),而客厅呢,你可以沿着东墙边摆放上一排沙发柜子(类比于LinearLayout),亦或者你也可以选择做一个个性化的装修,指定在什么位置摆放什么东西(类比于AbsoluteLayout)。我们设计UI就像在安排我们的房屋家具布局一样,可以采用不同的布局方式,而大的布局方式中还可以嵌套小的布局方式。

对于装修的门外汉,我们可能也就是按照上面的方式来摆放我们的家具,而作为专业的室内设计师,他们会精确的测量我们的房间总的大小,在总的大小限制下,然后测量每个家具的大小,然后出一个设计图,画好每个家具的具体位置,然后开始往里面搬家具,按照图纸摆放好。Android UI内部实现就像一个设计师在做室内设计一样,首先去做Measure,测量最外层父view的大小作为限定,然后开始测量里面子View,如果碰到子View不是ViewGroup就直接得到他的大小,如果碰到子View是ViewGroup就迭代的去遍历他的子View做测量,最终得到所有子View的大小及摆放位置,然后调用layout把她们放到指定的坐标位置,前面的一切准备工作做完了,我们就开始按照得到的大小及坐标位置调用draw把它们绘制出来。这里实际测量是会参考你的参数设置的,走向不同的设置流程,就不详细做说明。

边写边思考边回忆,让自己对这块有了更深的记忆,同时对整个流程有了更清晰的认识。


猜你喜欢

转载自blog.csdn.net/weixin_31706797/article/details/80161964