菜鸟学Android源码——Setting(1)
菜鸟学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
的应用。
最新文章更新在微信公众号上,欢迎关注获取详情:
菜鸟学Android源码——Setting(1)相关推荐
- android settings 源码,菜鸟学Android源码-Settings(2)
最近一直忙着项目上的活计,没啥心思关注博客,前两天屌丝逆袭, 看了一场你的名字,深深感叹叔叔辈的无奈啊, 青葱憧憬爱情的年华,垂老怀旧相依的岁月, 而我老未及老,幼以过幼, 哎,白瞎了一张电影票. 上 ...
- android源码下载-- 菜鸟先飞
百度或谷歌一下android源码下载,会出现一堆教程,大同小异,大部分都是这个被称为"权威"的翻译.这么多的教程,你是不是喜出望外呢?可是...你可以照做试试,成功的几率跟买彩票中 ...
- Android源码设计模式分析项目
原文链接:https://github.com/simple-android-framework/android_design_patterns_analysis Android源码设计模式分析开源项 ...
- android源码分析
01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 ...
- 下载和阅读Android源码
目录 一.如何下载AOSP 1.全量下载 2.单个下载 目录结构 二.如何阅读AOSP 1.要阅读哪些源码 2.阅读源码的顺序和方式 2.1 阅读顺序 2.2 阅读方式 3.用什么工具来阅读 3.1 ...
- 读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路,名师指路不如自己去悟,自己去悟不如分析android源码深处...
首先,作为一个已经学习android 一年多的人来说,如何选择android书籍,如何学习android 的app的开发,心中或多或少都有一些眉目,看了这本书的试读章节,真心感觉挺不错的.值得推荐,自 ...
- Ubentu编译Android源码(AOSP)
前言: 一直想要编译一下Android 源码,之前去google 看,下载要下载repo. 当时很懵逼,repo 是个什么?(repo 是一个python 脚本,因为Android 源码git 仓库太 ...
- android源码阅读笔记1-配置源码路径/阅读源码方法讨论
开始之前 android studio中配置android源码路径 android studio中有源码的路径,你只需要打开SDK Manager下载源码然后重启android studio即可查看源 ...
- Android4.0源码Launcher启动流程分析【android源码Launcher系列一】
最近研究ICS4.0的Launcher,发现4.0和2.3有稍微点区别,但是区别不是特别大,所以我就先整理一下Launcher启动的大致流程. Launcher其实是贯彻于手机的整个系统的,时时刻刻都 ...
最新文章
- 网站服务器c盘在哪找,云服务器c盘在哪儿
- Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))
- 【Maven】CentOS7使用Nexus3搭建maven私服
- PHP5.5四种序列化性能对比
- win+mysql自动备份吗_Windows下mysql自动备份的最佳方案
- python乘法运算为什么是重复_警惕python中的*重复符(运算符)
- nagios监控安装及设置案例
- opesnstack四部曲(1)---keystone
- Django之--POST方法处理表单请求
- 2020-06-28
- alidoing --使用JS实现多语言框架、喜欢的请进、、瓦特平台!
- 我的世界seus光影java版下载_我的世界seus光影mod
- Bulk Insert命令详解
- 简单的 Nodejs jade 实现Hello world
- 动环监控整体方案,动环监控系统施工方案
- C#操作word定位光标
- 高大上的数据可视化图表,只需6步就能完成
- Super NES Programming/SNES Specs
- 攻防世界-Crypto-Railfence
- ai怎么渐变颜色_AI里面怎么弄渐变色,哪位高手指点下啊?