Android之界面组件和窗口

界面组件和窗口

界面组件都有一个Window对象,每个Window对象负责构造和管理一棵控件树,为控件树构造对应的ViewRoot建立与窗口管理的双向通信。

 

    Window是一个抽象类,手机上是PhoneWindow类,其定义的控件树结构中根控件是DecorView,派生自FrameLayout,通过Window.getDecorView得到。

    PhoneWindow定义交互界面,主要由标题区域和内容区域组成,标题区域通常由标题文字、进度条、组件图标组成。通过Activity.setTitle改变标题内容;内容区域通过Activity.setContentView设定。

    通过Window.requestWindowFeature设定窗口参数,改变界面的基本形态。自定义窗口布局通过Window.setFeatureInt实现。

    PhoneWindow的辅助交互区域是选择菜单区域Option Menu。大多数情况下不可见,当用户点击菜单键或调用Activity.openOptionsMenu函数,菜单才会构造并显示。当用户再次单击菜单键或Activity.closeOptionsMenu函数时,菜单隐藏并关闭。

 

    Android中,动态构造控件是一个耗时过程,反复对可选菜单进程构造和销毁,会降低界面的反应速度。为此Android建立了可选菜单的缓存策略。可选菜单第一次展示之前,界面组件的Activity.onCreateOptionsMenu会被调用。可选菜单一旦被构造,在整个组件生命周期内不会被销毁,用户再次使用可选菜单时,不再调用

Activity.onCreateOptionsMenu进行构造。而是直接从缓存中读取可选菜单。如果需要可选菜单动态变更,需要重载Activity. onPrepareOptionsMenu

猜你喜欢

转载自aoyouzi.iteye.com/blog/1993110