菜鸟学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()函数,我们得到如下流程图:

从上图我们可以看到,在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的应用。

最新文章更新在微信公众号上,欢迎关注获取详情:

菜鸟学Android源码——Setting(1)相关推荐

  1. android settings 源码,菜鸟学Android源码-Settings(2)

    最近一直忙着项目上的活计,没啥心思关注博客,前两天屌丝逆袭, 看了一场你的名字,深深感叹叔叔辈的无奈啊, 青葱憧憬爱情的年华,垂老怀旧相依的岁月, 而我老未及老,幼以过幼, 哎,白瞎了一张电影票. 上 ...

  2. android源码下载-- 菜鸟先飞

    百度或谷歌一下android源码下载,会出现一堆教程,大同小异,大部分都是这个被称为"权威"的翻译.这么多的教程,你是不是喜出望外呢?可是...你可以照做试试,成功的几率跟买彩票中 ...

  3. Android源码设计模式分析项目

    原文链接:https://github.com/simple-android-framework/android_design_patterns_analysis Android源码设计模式分析开源项 ...

  4. android源码分析

    01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 ...

  5. 下载和阅读Android源码

    目录 一.如何下载AOSP 1.全量下载 2.单个下载 目录结构 二.如何阅读AOSP 1.要阅读哪些源码 2.阅读源码的顺序和方式 2.1 阅读顺序 2.2 阅读方式 3.用什么工具来阅读 3.1 ...

  6. 读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路,名师指路不如自己去悟,自己去悟不如分析android源码深处...

    首先,作为一个已经学习android 一年多的人来说,如何选择android书籍,如何学习android 的app的开发,心中或多或少都有一些眉目,看了这本书的试读章节,真心感觉挺不错的.值得推荐,自 ...

  7. Ubentu编译Android源码(AOSP)

    前言: 一直想要编译一下Android 源码,之前去google 看,下载要下载repo. 当时很懵逼,repo 是个什么?(repo 是一个python 脚本,因为Android 源码git 仓库太 ...

  8. android源码阅读笔记1-配置源码路径/阅读源码方法讨论

    开始之前 android studio中配置android源码路径 android studio中有源码的路径,你只需要打开SDK Manager下载源码然后重启android studio即可查看源 ...

  9. Android4.0源码Launcher启动流程分析【android源码Launcher系列一】

    最近研究ICS4.0的Launcher,发现4.0和2.3有稍微点区别,但是区别不是特别大,所以我就先整理一下Launcher启动的大致流程. Launcher其实是贯彻于手机的整个系统的,时时刻刻都 ...

最新文章

  1. 网站服务器c盘在哪找,云服务器c盘在哪儿
  2. Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))
  3. 【Maven】CentOS7使用Nexus3搭建maven私服
  4. PHP5.5四种序列化性能对比
  5. win+mysql自动备份吗_Windows下mysql自动备份的最佳方案
  6. python乘法运算为什么是重复_警惕python中的*重复符(运算符)
  7. nagios监控安装及设置案例
  8. opesnstack四部曲(1)---keystone
  9. Django之--POST方法处理表单请求
  10. 2020-06-28
  11. alidoing --使用JS实现多语言框架、喜欢的请进、、瓦特平台!
  12. 我的世界seus光影java版下载_我的世界seus光影mod
  13. Bulk Insert命令详解
  14. 简单的 Nodejs jade 实现Hello world
  15. 动环监控整体方案,动环监控系统施工方案
  16. C#操作word定位光标
  17. 高大上的数据可视化图表,只需6步就能完成
  18. Super NES Programming/SNES Specs
  19. 攻防世界-Crypto-Railfence
  20. ai怎么渐变颜色_AI里面怎么弄渐变色,哪位高手指点下啊?

热门文章

  1. Matlab 电磁波垂直入射、透射和反射
  2. Erasure Code
  3. 小程序源码下载[demo整理自github]
  4. Aws 认证的相关总结
  5. 极验验证码行为模拟(成功率90%以上)
  6. ANSYS教程与使用
  7. 维修计算机机房管理员职责,机房管理员职责
  8. 印象笔记Windows版无法同步(亲测有效)
  9. 【iPhone自定义铃声】iPhone设置炫酷的电话铃声、闹钟铃声-私人定制铃声-摆脱枯燥单一的iPhone背景铃声-操作超级简单
  10. 四,微服务容错Resilience4j(待改)