TopLevelSettings
通过AndroidX
的Preference
来展示设置项列表,设置项列表的内容通过静态配置+动态添加的方式获取。
1,静态配置
所谓静态配置就是通过xml来配置。 如果你还不了解Preference
,可以移步:www.jianshu.com/p/348eb0928… 简单了解一下
TopLevelSettings
继承自抽象类DashboardFragment
, 实现抽象方法getPreferenceScreenResId()
并返回preference的配置文件即可完成静态配置。
@Override
protected int getPreferenceScreenResId() {
return R.xml.top_level_settings;
}
top_level_settings
中配置了页面需要展示的配置项:
…
其中:
key
:该配置项的主键title
:配置项的标题summary
:概要标题下面的文字icon
:前面的图标order
:用来做排序的,值越小则排行越靠前fragment
:点击该item要跳转的界面controller
:该item的控制器,控制它的内容展示,是否可用,也可以控制它的点击事件
2,动态添加
动态获取是根据特殊的action标记,通过packageManger查询系统中安装的符合对应action的应用,将其动态添加到列表中。
例如:网络流量监控,存储空间管理,默认应用等配置项都是动态添加的。
具体实现可以参看文章:MTK快霸是如何动态加载的
二,系统设置其他界面
系统设置中除了.homepage.SettingsHomepageActivity
,其他大部分的Activity都定义在Settings
中, 并且继承自SettingsActivity
, 但其中并没有实现任何逻辑。因此,这些Activity的逻辑都是在SettingsActivity
中实现。
/**
- Top-level Settings activity
*/
public class Settings extends SettingsActivity {
/*
- Settings subclasses for launching independently.
/
public static class AssistGestureSettingsActivity extends SettingsActivity { / empty /}
public static class BluetoothSettingsActivity extends SettingsActivity { /