在继续讲解输入系统之前,我们先补充一个知识点,即activity,window,decor,view。下面用一个教室的例子,来形象的讲解他们的关系: 假设一个教室有多个活动房,如唱歌,跳舞,篮球等。每个活动房都有一个窗口,通过窗口可以观察里面的活动,一个application有一个或者activity(活动),如在手机联系人这个APP: 他有四个功能:拨号,通话记录,联系人,我的最爱这四个功能,每个功能就对应一个activity(一组相对独立的功能),每个activity都有一个独立界面显示在窗口上,及每个activity都有一个对应的window,我们可以通过这个window观察或者使用activity。
再次回到我们的现实例子,假如有个新房间,我们应该如何去装修他的窗口: 1.选择玻璃样式,如:整块的或者分隔的(decor:装饰) 2.在指定区域,只有创作(如划出一块区域用来贴窗花)
那么我们怎么给activity编写window呢?还是同理, 1.先选择样式(decor:装饰):全屏,有无标题栏等等 2.在decor的指定区域自由创作(开发人员),如放置各种View,Button,FextView,CherBox等。
总的来说可以理解为: 一个教室有多个活动房,每个活动房有一个窗口,在装修窗口时,先选样式,然后在指定区域贴窗花。 一个appliction有多个activity,每个activity有多个window,选定样式decor,然后在指定区域放置各种View。
下面是一个标记的图示: 中图示我们可以看到,一个window分成了状态栏,标题栏,自由创作区域。导航栏。注意: 1.其中的状态栏//导航栏是SystemVI进程描画的。 2.activity只是预留出状态栏/导航栏的位置 3.activity中的view是树状(分支)结构,在decor的指定区域放置各种view。
对于树状结构下面举一个例子。
在一Window的只有区域,我们放置两个FrameLayout(为View派生的子类),然后我们FrameLayout1中再放置TextView,FrameLayout2放置butoon与CheckBox,这样这个窗口有两个孩子分别为FrameLayout1,FrameLayout2,然而FrameLayout1有一个孩子TextView,FrameLayout1=2有两个孩子butoon与CheckBox。
这样就形成了树状结构,下一小节我们会做实验,把这些树状结构打印出来。