Setting学习(一)-静态界面

Setting学习(一)-静态界面

设置是整个android系统的重要应用,涉及的都是系统功能
Setting模块的主要路径 :/packages/apps/Settings/
Setting模块里的activity可能一看和其他的activity有不同,但是其实原理都是一样的,设置为了更好的区分和获取信息,在Androidmanifest.xml中添加了许多属性
从Androidmanifest.xml可以看到:
在这里插入图片描述
在这里插入图片描述
Settings有一个子类SubSettings.java
设置模块的主界面的Activity为 Settings

/packages/apps/Settings/src/com/android/settings/Settings.java
在这里插入图片描述
可以看到Settings的父类是SettingsActivity 内部也有许多继承SettingsActivity 的静态类内部类
\packages\apps\settings\src\com\android\settings\SubSettings.java
在这里插入图片描述
里面有两个方法,一个是向上导航另一个是判断是否为有效fragment
1.Settings和SubSettings都是空acticity,没有7大生命周期
2.他们都继承自SettingsActivity ,就都要去调用SettingsActivity 的onCreate()方法
3.Settings主界面Activity使用的是Settings
4.Settings子界面Activity基本上都是使用SubSettings

SettingsActivity继承自SettingsDrawerActivity,而SettingsDrawerActivity是
在frameworks\base\packages\settingslib\src\com\android\settingslib\drawer中定义
,SettingsDrawerActivity名称是沿用N版本的名字,但是侧滑栏功能在O版本上已经移除了
来看SettingsActivity的onCreate方法:
在这里插入图片描述
通过类名来判断加载布局,判断当前是Settings还是SubSettings来确定用什么布局来显示
在这里插入图片描述
如果是主界面的话加载settings_main_dashboard.xml
在这里插入图片描述
主要有两个fragment一个显示顶部的搜索栏,一个下面显示主要内容(一级菜单)
在之后的界面跳转即 launchSettingFragment(initialFragmentName, isSubSettings, intent)函数中又做出了区分:
在这里插入图片描述
第一次进入到主界面时mIsShowingDashboard是等于true的,所以会进入else
主界面使用DashboardSummary(Fragment)进行填充:
如果是子界面的话:
子界面则使用各自的Fragment,并设置各自的主题。
在这里插入图片描述
Settings的内部类的启动一般都是通过activity 中的action属性启动的,而判断的依据也是通过mIsShowingDashboard,加载得是settings_main_prefs.xml文件。
Settings的内部类的主体显示内容依然是一个Fragment,而这个Fragment已经在AndroidManifest.xml中定义好了.
StorageDashboardActivity为例
在这里插入图片描述
里面有很多属性,这些属性是在SettingLib中的
/frameworks/base/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java有用到的
内部类StorageDashboardActivity的Fragment显示内容为:
com.android.settings.FRAGMENT_CLASS,即com.android.settings.deviceinfo.StorageSettings

参考:https://blog.youkuaiyun.com/qq_34149526/article/details/83186719

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值