赞
踩
本人是做车机的,所以系统设置是会经常需要修改的,刚开始也是一脸无助,后来查找资料,仔细阅读后,基本也能应付工作内容了,现在将它记录一下,怕自己忘了,也以供大家参考,文笔不好请原谅
5.1系统设置应用的主界面是Settings.java,它继承自SettingsActivity.java,而SettingsActivity继承自Activity,所以设置主界面本质还是一个Activity;首先从父类SettingsActivity的onCreate()方法开始看,来到setContentView(mIsShowingDashboard?R.layout.settings_main_dashboard : R.layout.settings_main_prefs),因为mIsShowingDashboard为true,所以加载的布局文件是R.layout.settings_main_dashboard,该布局文件在ndroid\packages\apps\Settings\res\layout位置,代码如下:
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/main_content"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:background="@color/dashboard_background_color"
- />
接着我们来到switchToFragment(DashboardSummary.class.getName(),null,false,false,mInitialTitleResId, mInitialTitle, false)这行代码,为什么来到这里呢?也是因为mIsShowingDashboard为true的缘故,通过这行代码就切换到了DashboardSummary.java这个Fragment,DashboardSummary.java这个类在android\packages\apps\Settings\src\com\android\settings\dashboard\目录下,既然DashboardSummary.java是个Fragment,那么我们直接看onCreateView()方法,这个方法加载了一个R.layout.dashboard布局,代码如下:
- <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/dashboard"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbarStyle="outsideOverlay"
- android:clipToPadding="false">
- <LinearLayout
- android:id="@+id/dashboard_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center_horizontal"
- android:paddingStart="@dimen/dashboard_padding_start"
- android:paddingEnd="@dimen/dashboard_padding_end"
- android:paddingTop="@dimen/dashboard_padding_top"
- android:paddingBottom="@dimen/dashboard_padding_bottom"
- android:orientation="vertical"
- />
-
- </ScrollView>
------------------------------------------------//-----------------------------------
总结
1. 大家熟悉了Settings主界面的UI显示流程,那么在工作中遇到修改的需求就不会那么头疼了,做车机的同学肯定会遇到 这种需求,没人带着看系统源码是很痛苦的,还看不懂,我也是看了别人的资料才能慢慢看懂的,以此感谢分享的大神们
2. 特此说明一下,以上代码只是Android5.1平台的系统Settings源码,其他平台的源码和文件位置可能不同,需注意
3. 其实上面说得就是Settings主界面的UI显示流程,它其实就是一个Activity,然后装了一个DashboardSummary.java这 个Fragment,仅此而已
4. 以上内容提到的文件按顺序如下:以便大家自己追踪代码
[SettingsActivity.java] [settings_main_dashboard.xml] [DashboardSummary.java] [dashboard.xml]
[dashboard_categories.xml] [DashboardCategory.java] [DashboardTile.java] [DashboardTileView.java]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。