菜鸟学Android源码——Setting(1)

来源:互联网 发布:大数据与传统制造业 编辑:程序博客网 时间:2024/06/05 11:28

菜鸟学Android源码——Setting(1)

在上一篇中,我简单介绍了Android源码的下载和编译,还没有下载编译源码的小伙伴请看这里:Android源码分析之——下载并编译源码

关于系统设置App的源码位于:/packages/apps/Settings中,我们可以通过AndroidManifest.xml查看整个Setting应用的入口Activity,从而理清整个应用的脉络,Setting应用的AndroidManifest.xml部分代码如下:

<!-- Settings -->        <activity android:name="Settings"                android:taskAffinity="com.android.settings"                android:label="@string/settings_label_launcher"                android:launchMode="singleTask">            <intent-filter>                <action android:name="android.settings.SETTINGS" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"                android:value="true" />        </activity>        <!-- Alias for launcher activity only, as this belongs to each profile. -->        <activity-alias android:name="Settings"                android:taskAffinity="com.android.settings"                android:label="@string/settings_label_launcher"                android:launchMode="singleTask"                android:targetActivity="Settings">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>        <receiver android:name="ManagedProfileSetup">            <intent-filter>                <action android:name="android.intent.action.USER_INITIALIZE"/>                <action android:name="android.intent.action.PRE_BOOT_COMPLETED"/>            </intent-filter>        </receiver>

从上述部分可以看出,整个应用的入口是SettingActivity.java,我们通过分析SettingActivityonCreate()函数,我们得到如下流程图:
OnCreate Process
从上图我们可以看到,在SettingActivity.java初始化时其最终进入的是DashboardSummary Fragment,通过查看布局文件,我们最终确定了如下的UI界面对应图:
这里写图片描述
Setting中,上图的所有设置选项都是通过res/xml/dashboard_categories.xml配置的,完整的源代码文件如下所示:

<dashboard-categories        xmlns:android="http://schemas.android.com/apk/res/android">    <!-- WIRELESS and NETWORKS -->    <dashboard-category            android:id="@+id/wireless_section"            android:title="@string/header_category_wireless_networks" >        <!-- Wifi -->        <dashboard-tile                android:id="@+id/wifi_settings"                android:title="@string/wifi_settings_title"                android:fragment="com.android.settings.wifi.WifiSettings"                android:icon="@drawable/ic_settings_wireless"                />        <!-- Bluetooth -->        <dashboard-tile                android:id="@+id/bluetooth_settings"                android:title="@string/bluetooth_settings_title"                android:fragment="com.android.settings.bluetooth.BluetoothSettings"                android:icon="@drawable/ic_settings_bluetooth2"                />        <!-- SIM Cards -->        <dashboard-tile                android:id="@+id/sim_settings"                android:title="@string/sim_settings_title"                android:fragment="com.android.settings.sim.SimSettings"                android:icon="@drawable/ic_sim_sd"                />        <!-- Data Usage -->        <dashboard-tile                android:id="@+id/data_usage_settings"                android:title="@string/data_usage_summary_title"                android:fragment="com.android.settings.DataUsageSummary"                android:icon="@drawable/ic_settings_data_usage"                />        <!-- Operator hook -->        <dashboard-tile                android:id="@+id/operator_settings"                android:fragment="com.android.settings.WirelessSettings" >            <intent android:action="com.android.settings.OPERATOR_APPLICATION_SETTING" />        </dashboard-tile>        <!-- Other wireless and network controls -->        <dashboard-tile                android:id="@+id/wireless_settings"                android:title="@string/radio_controls_title"                android:fragment="com.android.settings.WirelessSettings"                android:icon="@drawable/ic_settings_more"                />    </dashboard-category>    <!-- DEVICE -->    <dashboard-category            android:id="@+id/device_section"            android:title="@string/header_category_device" >        <!-- Home -->        <dashboard-tile                android:id="@+id/home_settings"                android:title="@string/home_settings"                android:fragment="com.android.settings.HomeSettings"                android:icon="@drawable/ic_settings_home"                />        <!-- Display -->        <dashboard-tile                android:id="@+id/display_settings"                android:title="@string/display_settings"                android:fragment="com.android.settings.DisplaySettings"                android:icon="@drawable/ic_settings_display"                />        <!-- Notifications -->        <dashboard-tile                android:id="@+id/notification_settings"                android:title="@string/notification_settings"                android:fragment="com.android.settings.notification.NotificationSettings"                android:icon="@drawable/ic_settings_notifications"                />        <!-- Storage -->        <dashboard-tile                android:id="@+id/storage_settings"                android:title="@string/storage_settings"                android:fragment="com.android.settings.deviceinfo.Memory"                android:icon="@drawable/ic_settings_storage"                />        <!-- Battery -->        <dashboard-tile                android:id="@+id/battery_settings"                android:title="@string/power_usage_summary_title"                android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"                android:icon="@drawable/ic_settings_battery"                />        <!-- Application Settings -->        <dashboard-tile                android:id="@+id/application_settings"                android:title="@string/applications_settings"                android:fragment="com.android.settings.applications.ManageApplications"                android:icon="@drawable/ic_settings_applications"                />        <!-- Manage users -->        <dashboard-tile                android:id="@+id/user_settings"                android:title="@string/user_settings_title"                android:fragment="com.android.settings.users.UserSettings"                android:icon="@drawable/ic_settings_multiuser"                />        <!-- Manage NFC payment apps -->        <dashboard-tile                android:id="@+id/nfc_payment_settings"                android:title="@string/nfc_payment_settings_title"                android:fragment="com.android.settings.nfc.PaymentSettings"                android:icon="@drawable/ic_settings_nfc_payment"                />        <!-- Manufacturer hook -->        <dashboard-tile                android:id="@+id/manufacturer_settings"                android:fragment="com.android.settings.WirelessSettings">            <intent android:action="com.android.settings.MANUFACTURER_APPLICATION_SETTING" />        </dashboard-tile>    </dashboard-category>    <!-- PERSONAL -->    <dashboard-category            android:id="@+id/personal_section"            android:title="@string/header_category_personal" >        <!-- Location -->        <dashboard-tile                android:id="@+id/location_settings"                android:title="@string/location_settings_title"                android:fragment="com.android.settings.location.LocationSettings"                android:icon="@drawable/ic_settings_location"                />        <!-- Security -->        <dashboard-tile                android:id="@+id/security_settings"                android:title="@string/security_settings_title"                android:fragment="com.android.settings.SecuritySettings"                android:icon="@drawable/ic_settings_security"                />        <!-- Account -->        <dashboard-tile                android:id="@+id/account_settings"                android:title="@string/account_settings_title"                android:fragment="com.android.settings.accounts.AccountSettings"                android:icon="@drawable/ic_settings_accounts"                />        <!-- Language -->        <dashboard-tile                android:id="@+id/language_settings"                android:title="@string/language_settings"                android:fragment="com.android.settings.inputmethod.InputMethodAndLanguageSettings"                android:icon="@drawable/ic_settings_language"                />        <!-- Backup and reset -->        <dashboard-tile                android:id="@+id/privacy_settings"                android:title="@string/privacy_settings"                android:fragment="com.android.settings.PrivacySettings"                android:icon="@drawable/ic_settings_backup"                />    </dashboard-category>    <!-- SYSTEM -->    <dashboard-category        android:id="@+id/system_section"        android:title="@string/header_category_system" >        <!-- Date & Time -->        <dashboard-tile                android:id="@+id/date_time_settings"                android:title="@string/date_and_time_settings_title"                android:fragment="com.android.settings.DateTimeSettings"                android:icon="@drawable/ic_settings_date_time"                />        <!-- Accessibility feedback -->        <dashboard-tile                android:id="@+id/accessibility_settings"                android:title="@string/accessibility_settings"                android:fragment="com.android.settings.accessibility.AccessibilitySettings"                android:icon="@drawable/ic_settings_accessibility"                />        <!-- Print -->        <dashboard-tile                android:id="@+id/print_settings"                android:title="@string/print_settings"                android:fragment="com.android.settings.print.PrintSettingsFragment"                android:icon="@drawable/ic_settings_print"                />        <!-- Development -->        <dashboard-tile                android:id="@+id/development_settings"                android:title="@string/development_settings_title"                android:fragment="com.android.settings.DevelopmentSettings"                android:icon="@drawable/ic_settings_development"                />        <!-- About Device -->        <dashboard-tile                android:id="@+id/about_settings"                android:title="@string/about_settings"                android:fragment="com.android.settings.DeviceInfoSettings"                android:icon="@drawable/ic_settings_about"                />    </dashboard-category></dashboard-categories>

下一篇中我们将重点介绍在Setting中的自定义ViewGroup的应用。

0 1
原创粉丝点击