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 解析的更多相关文章

  1. Android源代码解析之(十三)--&gt;apk安装流程

    转载请标明出处:一片枫叶的专栏 上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定文件夹.解析apk文件并安装的过程,这个安装过程实 ...

  2. android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  3. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  4. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  5. android XMl 解析神奇xstream 三: 把复杂对象转换成 xml

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  6. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  7. Android动画解析--XML

    动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...

  8. android 中解析XML的方法(转)

    在XML解析和使用原始XML资源中都涉及过对XML的解析,之前使用的是 DOM4J和 XmlResourceParser 来解析的.本文中将使用XmlPullParser来解析,分别解析不同复杂度的t ...

  9. 将android Settings 源码 导入到 eclipse工程

    1.  新建 android 项目 拷贝源码/packages/apps/Settings到你的其它目录. 在eclipse中,新建项目,但是要从exitting source选择: 2. 导入相关的 ...

随机推荐

  1. HTML5中class选择器属性的解释

    设置有class属性值的元素,可以被css中的选择器调用,也可以在javascript中以getElementsByClassName()方法调用. 可以给各个元素添加class而且名称可以相同与id ...

  2. sunny day

    初始学习记录 基于http://www.htmleaf.com/html5/html5muban/20141121552.html模板 <!DOCTYPE html> <html l ...

  3. Eclipse下Maven插件配置

    要做一个基于C/S架构的汽车租赁系统,由于在实习期间接触过一些Java和SpringMVC,Spring,Hibernate的东西,所以决定使用这个框架组合来完成这个项目. 首先是Maven的配置,为 ...

  4. MSSQL 查询统计某状态出现的次数及累计时间

    1.问题来源 最近客户需要统计某个设备,某状态,在某一个时间段内出现的次数,并计算累计出现的时间. 数据源如下: 现在如果要统计UPSCTSTA状态为D出现的次数(同一状态,连续出现的认为是一次),并 ...

  5. ExtJS实例1

    1.创建一个Extjs的Window,用ajax请求HTML文件,并执行HTML的代码和脚本 窗体中文字是从一个HTML中获取,并且HTML中执行脚本使窗体高亮1秒 主页面: <!DOCTYPE ...

  6. 一些SQL语句的问题

    1.getdate()函数问题 go create table table_1( id int primary key identity, name ) not null, daytime datet ...

  7. Java学习笔记(1):注释规范

    注释规范 1.   类注释 在每个类前面必须加上类注释,注释模板如下: 2.   属性注释 在每个属性前面必须加上属性注释,注释模板如下: 3.   方法注释 在每个方法前面必须加上方法注释,注释模板 ...

  8. nginx location详解(三)

    location官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location Syntax: location [ = | ...

  9. javascript DOM对象转jquery对象

    首先,假设一种情形:要在HTML文件中为一个select对象添加一个函数,这个函数的名字叫dynamic_change(this),当select的option被改变的时候调用onchange事件来处 ...

  10. javascript时钟

    <script language="JavaScript" type="text/javascript">         function now ...