zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Legacy(点对线段有路走,线段向点有路走,线段树走dij)
    G. Death DBMS(查询每个主串和n个模板串匹配后val最大值,支持单点更新)
    2020 CCPC Wannafly Winter Camp Day5 J Xor on Figures(矩阵转01串,统计01串异或种类)
    zoj3988(自己集合和自己集合匹配)
    2020 CCPC Wannafly Winter Camp Day7 A(求任何子序列中相邻范围内数的个数的总和)
    hdu6241(给定树中向上向下限制求最小可能个数)
    hdu6230(求限制条件的回文个数,利用manacher+BIT求解)
    NOIP 2020 游记
    分散层叠算法学习笔记
    代理模式
  • 原文地址:https://www.cnblogs.com/dreamy890322/p/3529320.html
Copyright © 2011-2022 走看看