前提:开发安卓以来,关于定制视图,也是半瓶装醋——闲逛的状态。 说不会吧,也可以摸索着制作视图,说会吧,一个也说不出来,所以不行。 即使打算从头开始学习,实践理论,没有达到完全精通的状态,至少在看到需求和用户界面时,不会出现无意义的反感和脱口而出“无法实现”的情况。
在开始学习自定义视图之前,请了解安卓视图级别的关系。 据了解,Android的视图大致可以分为活动、电话窗口、解码器视图、视图组和视图。 他们之间的层次关系是什么?
试着从源代码的角度分析一下。 (闲话少说,读源代码对我来说也是个难点,没有清晰的思路可以读完源代码。 )
创建新的Activity后,必须调用setContentView ()方法完成接口的显示。 现在,让我们进入activity的setContentView ()方法。
getWindow ().setContentView ) )的方法,因此请转至该getWindow ) )的方法
你可以看到从return里传出了mWindow,这个mWindow是怎么来的呢? 在activity的源代码中,可以看到attach (方法的mWindow是实例的PhoneWindow
也就是说,Activity的setContentView ()实际上调用了PhoneWindow的setContentView ) )方法,所以这里只讨论层次关系,不考虑如何实现) settview
单击此方法可以看到名为mDecor的参数
此mDecor是定义的DecorView
进入解码器视图时,您会看到它是从帧布局(典型的视图组)继承的
到目前为止,这些不同类型的视图之间的层次关系基本上很清楚。 从最外层到最内层,这就是活动电话窗口解码器视图视图组/视图。 下图