Android O Settings
Settings
路径: packages/apps/Settings
主界面和子界面
从清单文件AndroidManifest.xml中入手:
setting的主界面的Activity为 Settings
Settings.java类看,除了大量静态类继承SettingsActivity,就没什么东西了。
setting的子界面Activity为 SubSettings
SubSttings java 里有重写了两个方法 向上导航和判断是否有效fragment,还有一个静态内部类继承本身。
Settings与SubSttings 都是空Activity(不继承7大生命周期)
Settings与SubSttings 都继承于SettingsActivity
SettingsActivity继承自SettingsDrawerActivity,而SettingsDrawerActivity是在SettingLib中定义,SettingsDrawerActivity名称是沿用N版本的名字,但是侧滑栏功能在O版本上已经移除了。
主要分析的是SettingsActivity的onCreate()方法;
布局加载:
主界面的layout为 :settings_main_dashboard.xml:
主界面布局中包含两个FrameLayout,一个是顶部搜索栏,还有下面的主要内容(显示一级菜单)
参考7.0版本主界面布局:
子界面的layout为 :settings_main_perfs.xml:
子界面由一个LinearLayout和一个RelativeLayout组成。RelativeLayout默认是隐藏的。
界面如下:
Settings界面:
主界面使用DashboardSummary(Fragment)进行填充
子界面则使用各自的Fragment,并设置各自的主题。