赞
踩
目录
主界面使用的layout是:settings_main_dashboard,子界面使用的layout是:settings_main_prefs。
主界面使用DashboardSummary(Fragment)进行填充(RecyclerView),子界面都是使用各自的Fragment进行填充。
settings_main_dashboard中只有一个FrameLayout,后面会将其替换为DashboardSummary。
settings_main_prefs中也存在一个叫main_content的FrameLayout,后面会将其替换为各自的Fragment。
界面渲染可参考:Android O Settings源码流程分析(界面渲染篇)
RecyclerView,用DashboardAdapter填充数据。
里面包括setConditions,setSuggestions,setCategory。
一级界面数据加载机制一级菜单
对应TopLevelSettings.java,布局文件:
top_level_settings.xml
二级菜单是动态加载和静态xml布局文件, preferenceScreen, PreferenceController中控制数据更新。
默认数据来源于SettingProvicer.
1.当点击主界面上的item时会调用Utils.startWithFragment方法
2.在Utils.startWithFragment会跳转至SubSettings,对应的fragment也作为参数传递给了SubSettings
3.SubSettings是一个空的activity,但SubSettings继承于SettingsActivity,因此会调用父类SettingsActivity的onCreate方法
4.在onCreate方法中,className为SubSettings,isSubSettings为true,mIsShowingDashboard为false
5.因此会执行switchToFragment(initialFragmentName, initialArguments, true, false, mInitialTitleResId, mInitialTitle, false);
6.通过switchToFragment将settings_main_prefs的main_content替换为了子界面对应的fragment
搜索栏在settings_main_dashboard.xml 中的search_bar,布局文件为search_edittext.xml,对应SearchActivity,SearchFragment,用RecyclerView来显示搜索项。
实现原理参考:Settings搜索栏实现原理
针对Fragement类型子界面,可用 adb logcat -s SubSettings 轻松查看进入了哪个界面。
AppInfoDashboardFragment----(instant_app_buttons 打开那一栏)----launch 按钮----(InstantAppButtonsPreferenceController.java 控制打开按钮显示否, 点击事件在AppButtonsPreferenceController (里面的refreshUi控制界面刷新))
锁屏
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。