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. 导入相关的 ...
随机推荐
- hdu 1022
// hdu1022 这题算是我做的第一道栈的题目,之前看过栈的一些内容,做这道题的时候,可以模拟出过程,但是具体的代码不会写...所以决定练习一些栈和队列的问题,大概思路就是有三个数组和一个栈,先把 ...
- PHP 单链表
<?php class Hero { public $no; public $name; public $nickname; public $next=null; public function ...
- jQuery mini ui 2
1.<a class="mini-button" iconCls="icon-add" onclick="addRow()" plai ...
- mssql 查询全部用户创建表 条数及占用空间大小(KB)
select b.name as tablename , --表名a.rowcnt as datacount, --条数rtrim(8*a.dpages) as size --占用空间单位KBf ...
- json数据返回
<script type="text/javascript"> function xmlpage(){ var xhr=new XMLHttpRequest(); xh ...
- 查找Mysql数据库连接jar包和对应的Driver和Url
以前写jdbc连接向来都是直接copy,对于连接数据库的jar包在哪下载,对应的Driver类是哪一个,数据库连接串怎么找等等都没有做过,今天从零开始整了一遍. 使用的数据库是Mysql 一.已安装了 ...
- C++ Const成员函数
一些成员函数改变对象,一些成员函数不改变对象. 例如: int Point::GetY() { return yVal; } 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象 ...
- ext中处理Combobox组件点击触发后台事件的问题
ext的Combobox组件在绑定数据的时候需要一个Store来绑定数据,在store里面我们可以设置autoLoad属性,这个属性表示Store可以自动的到后台获取数据,ext实质上就是封装好的ja ...
- php实现冒泡排序
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N.1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换.2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最 ...
- JQuery 获取验证码倒计时
HTML代码: <button id="btn">点击获取验证码</button> Jquery:代码: $(document).ready(functio ...