android Settings 解析
1、Settings的主界面的实现:
Settings采用了PreferenceActivity和PreferenceFragment结合的实现方式。
Settings.java继承自PreferenceActivity,是Settings的主界面,它通过loadHeadersFromResource函数(api level 11)加载res/xml/settings_headers.xml来构造界面。在settings_headers.xml中声明了要在Settings主界面显示的各个header(如Sound、Display等)Settings.HeaderAdapter将其中的header分为三类。在Settings.HeaderAdapter中的getView方法中根据header的类型使用不同的布局文件。
为header划分类型的函数
static int getHeaderType(Header header) {
if (header.fragment == null && header.intent == null) {
return HEADER_TYPE_CATEGORY; // 因为没有指明fragment和intent
} else if (header.id == R.id.wifi_settings || header.id == R.id.bluetooth_settings || header.id == R.id.mobiledata_settings) {
return HEADER_TYPE_SWITCH; // 针对特定的三个header,分别为Wi-Fi、Bluetooth和Mobile data
} else {
return HEADER_TYPE_NORMAL;
}
}
当我们点击主界面的header后会显示与该header相关的设置界面。大部分(如Display的详细设置界面)都是通过继承PreferenceFragment来实现的;有一部分是在settings_headers.xml中声明<intent>,当被点击时(触发PreferenceActivity的onHeaderClick())将会通过startActivity来启动在<intent>节点中声明的targetClass(如设置中的Add account)。
2、通过res/xml/settings_headers.xml分析android4.3里设置的构成
无线和网络
Wifi:com.android.settings.wifi.WifiSettings
MobileData:com.android.phone.MSimMobileNetworkSubSettings phone里的写的
Bluetooth:com.android.settings.bluetooth.BluetoothSettings
Data Usage(流量使用情况):com.android.settings.DataUsageSummary
Operator hook(运营商):com.android.settings.WirelessSettings(NFC nfc beam 具体不清楚)
Other wireless and network controls(更多):com.android.settings.WirelessSettings
设备
Multi Sim Settings(多SIM卡设置):com.android.settings.MultiSimSettings被注释掉了
Multi Sim Settings(双卡设置):com.android.settings.multisimsettings.MultiSimSettings
Global roaming settings(国际漫游设置)if RoamingSettings installed(如果安装了漫游设置):android:action="com.android.action.roamingsettings"
Sound:com.android.settings.SoundSettings
Display:com.android.settings.DisplaySettings
Storage:com.android.settings.deviceinfo.Memory
Battery:com.android.settings.fuelgauge.PowerUsageSummary
Application Settings(应用):com.android.settings.ApplicationSettings
Manage users(用户):com.android.settings.users.UserSettings
Manufacturer hook(制造商):com.android.settings.WirelessSettings
PERSONAL(个人)
Location(位置信息使用权限):com.android.settings.LocationSettings
Security(安全):com.android.settings.SecuritySettings
Language:com.android.settings.inputmethod.InputMethodAndLanguageSettings
Backup and reset(备份和重置):com.android.settings.PrivacySettings
ACCOUNTS section(账户)
add account(添加账户):android.settings.ADD_ACCOUNT_SETTINGS
SYSTEM(系统)
Date & Time:com.android.settings.DateTimeSettings
Accessibility feedback(辅助功能):com.android.settings.AccessibilitySettings
Development(开发者选项):com.android.settings.DevelopmentSettings
About Device(关于手机):com.android.settings.DeviceInfoSettings
android Settings 解析的更多相关文章
- Android源代码解析之(十三)-->apk安装流程
转载请标明出处:一片枫叶的专栏 上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定文件夹.解析apk文件并安装的过程,这个安装过程实 ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- Android动画解析--XML
动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...
- android 中解析XML的方法(转)
在XML解析和使用原始XML资源中都涉及过对XML的解析,之前使用的是 DOM4J和 XmlResourceParser 来解析的.本文中将使用XmlPullParser来解析,分别解析不同复杂度的t ...
- 将android Settings 源码 导入到 eclipse工程
1. 新建 android 项目 拷贝源码/packages/apps/Settings到你的其它目录. 在eclipse中,新建项目,但是要从exitting source选择: 2. 导入相关的 ...
随机推荐
- WindowsServer2012 取消密码策略
1.打开“组策略管理”界面:管理工具 >> 组策略管理,如果找不到该功能,则需要先安装,在“服务管理器”里面“添加新功能”.(或者:开始——运行——gpmc.msc) 2.依次打开“林”& ...
- java.io.FileNotFoundException: class path resource [bean/test/User.hbm.xml] cannot be opened because it does not exist
确定下 WEB-INF/classes下有没有,不是src下哦 工程的src下创建后,会发布到tomcat下项目下的classes中
- rest简单实例
http://www.cnblogs.com/fredric/archive/2012/03/03/2378680.html http://www.thinksaas.cn/topics/0/153/ ...
- android 样式开发
1. Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素<resource>,而具体的每种样式定义则是通过<resource>下的 ...
- C++朝花夕拾【更新】
C++拾遗 更新一些平时遇到的小细节: 1.关于类的无参构造函数和带有全部默认参考值的构造函数的区别 书上说的是带有全部默认值的构造函数就是无参构造函数,私以为不以为然,来看下边这个例子: #incl ...
- uva 12207 - That is Your Queue
#include <cstdio> #include <iostream> #include <deque> using namespace std; int ma ...
- C#中的委托和事件2-2(转)
引言 如果你看过了 C#中的委托和事件2-1 一文,我想你对委托和事件已经有了一个基本的认识.但那些远不是委托和事件的全部内容,还有很多的地方没有涉及.本文将讨论委托和事件一些更为细节的问题,包括一些 ...
- 利用shell脚本函数实现网络连通性的检测
通常情况下,linux系统网络连通性的检测有两种方法: 1.通过“ping指令 + 目标IP” 或者 “ping指令 + 目标IP域名” 注意针对IPv6地址的IP网络检测需要试用ping6,同时pi ...
- 下拉列表框Combo Box
Combo Box/Combo Box Ex 组合窗口是由一个输入框和一个列表框组成.创建一个组合窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR lpszText ...
- Ftp协议Socket实现
原来用WebRequest来传输文件,被人鄙视了.就弄个Socket版的,支持Active,Passive模式. 带事件日志,有时间的人可以拿去做C#版的flashfxp. public class ...