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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM