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

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的跳转实现。

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

猜你喜欢

转载自blog.csdn.net/qq_34149526/article/details/83211665