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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值