• 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

  • 相关阅读:
    JS时钟--星期 年 月 日 时 分
    [考试反思]0825NOIP模拟测试30:没落
    [考试反思]0822NOIP模拟测试29:延续
    [考试反思]0821NOIP模拟测试28:沉默
    小奇的仓库:换根dp
    短期Flag
    [考试反思]0820NOIP模拟测试27:幻影
    [考试反思]0819NOIP模拟测试26:荒芜
    0818NOIP模拟测试25——B卷简记
    [模板]tarjan——最后通牒
  • 原文地址:https://www.cnblogs.com/dreamy890322/p/3529320.html
Copyright © 2020-2023  润新知