本文为博主辛苦总结,针对Android4.42源码分析,转载请注明出处,http://blog.csdn.net/zrf1335348191/article/details/50837027
最近在研究Android的Settings源码,先看一下源码的目录结构。大概967左右个文件,是不是及其头疼而且无从下手?待我娓娓道来~~~~~
1,初识Settings
首先,这么多文件,到底哪个文件是主界面呢?在Settings目录下找到Androidmanifest.xml清单配置文件,找到首先启动的activity:
<activity android:name="Settings" android:label="@string/settings_label_launcher" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
可以看到,设置的主界面是Settings.Java(package com.android.settings;),
public class Settings extends PreferenceActivity
implements ButtonBarHandler, OnAccountsUpdateListener {
.....
<pre name="code" class="java"> loadHeadersFromResource(R.xml.settings_headers, headers);//加载布局
.....
}
所对应的xml文件为Settings_headers.xml(res\xml\)文件。在此摘列出xml文件的一部分。
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- WIRELESS and NETWORKS -->
<header android:id="@+id/wireless_section"
android:title="@string/header_category_wireless_networks" />
<!-- Wifi -->
<header
android:id="@+id/wifi_settings"
android:fragment="com.android.settings.wifi.WifiSettings"
android:title="@string/wifi_settings_title"
android:icon="@drawable/ic_settings_wireless" />
<!-- MobileData -->
<header
android:id="@+id/mobiledata_settings"
android:icon="@drawable/stat_notify_mobile_data"
android:title="@string/data_usage_enable_mobile">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.MobileNetworkSettings" />
</header>
.........
</preference-headers>
每个可以选择和点击的item基本有四个属性,以WiFi_header为例