Android O Settings源码流程分析(界面渲染篇)

本文深入解析Android设置界面的渲染机制,介绍如何通过Activity中的SwitchToFragment()方法填充fragment,实现菜单间的跳转。探讨meta-data标签中com.android.settings.FRAGMENT_CLASS键值对的作用,以及它是如何指定Activity的真实布局实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android O Settings 

Settings 渲染fragment(菜单之间的跳转)

在Activity中填充fragment的方法主要为SettingActivity中的SwitchToFragment()

给mFragmentClass赋值为AndroidManifest.xml中的<meta-data>标签中key为 META_DATA_KEY_FRAGMENT_CLASS的的值

getMetaData() 方法

代码如下:

这个函数的主要作用就是从Activity标签中获取meta-data标签中key为com.android.settings.FRAGMENT_CLASS的值,并将其赋值给mFragmentClass这个私有变量。

 

构建一个intent并为其增加一个特殊的键值对

key:settings:show_fragment(EXTRA_SHOW_FRAGMENT),

value:mfragmentClass指定的类名

所以要先执行getMetaData,是因为mFragmentClass赋值是在getMeatData中进行的。

判断布局

判断当前类是否为Settings.class或者是其他子菜单,即进入方式为点击launcher上的图标进入的主设置界面

接下来看launchSettingFragment()方法:

initialArguments通过赋值保存了meta-data中指定的value值。

SwicthToFragment实现渲染

加载DashboardSummary(Fragment)显示一级菜单页面;

其他的则加载子菜单页面;

switchToFragment()方法:

先判断fragment是否合法,然后将方法中传入的Fragment进行实例化,通过replace(fragment)进行渲染。

通过上面的分析,我们应该了解的事情是,AndroidManifest中每个Activity其meta-data中的数据都是很有用的,特别是com.android.settings.FRAGMENT_CLASS对应的键值对,指定了其所在Activity的真正布局实现。其实,也是完成了从其他包的Activity向Settings中fragment的跳转实现。

 

点击进入下篇——数据加载篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值