菜鸟学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
,我们通过分析SettingActivity
的onCreate()
函数,我们得到如下流程图:
从上图我们可以看到,在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
- 菜鸟学Android源码——Setting(1)
- Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
- Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
- Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
- Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
- 菜鸟学Android源码-Settings(2)
- 菜鸟学反汇编1—empty
- 菜鸟学Android源码-Android System StartUp Process
- 菜鸟学android——布局文件的命名
- 菜鸟学Android——横屏竖屏自适应布局
- 菜鸟学android——paint画虚线的问题
- 菜鸟学android——正则表达式,替换
- 菜鸟学android——touch事件的传递顺序
- 菜鸟学android——设置图片透明度
- 菜鸟学android——Notification、PendingIntent问题
- 菜鸟学Android-(1)系统架构
- Android call setting 源码分析
- 菜鸟学SSH(一)——Struts实现简单登录(附源码)
- 容易已发bug环节总结
- 欢迎使用CSDN-markdown编辑器
- 类的有参方法
- 小学期实训之day2
- Android 自定义TopBar的复用
- 菜鸟学Android源码——Setting(1)
- laravel 怎么部署到万网的虚拟主机上?
- JS模板引擎---mustache与HandleBars
- reids集群
- JavaScript基础(一)
- 心情无迹的博客
- Julia: 如何转换PyPlot的X轴的日期格式?
- 75. Sort Colors
- OO五大原则