android settings学习笔记(二)-细节分析
来源:互联网 发布:屏幕监控软件 编辑:程序博客网 时间:2024/05/17 06:00
android settings学习笔记(二)-细节分析
1、Settings类
设置页面的Activity:
public class Settings extends PreferenceActivity implements ButtonBarHandler{}
因为从3.0中就引入了Fragment机制,所以在Settings里面就只有这一个Acitivity类,而进入表中的某项设置后,不是进入到新的Activity,而是在原来的Activity上切换了一个UI界面而已。
2、Settings Fragment
Android 4.0上Settings使用了Framgment机制。Fragment是我们在单个Activity上要切换多个UI界面,显示不同内容,对不同的界面不再使用不同的Activity。
3、Settings主界面的实现方法
为了能适应平板和手机,Settings采用了PreferenceActivity和PreferenceFragment结合的实现方式。
Settings类继承自PreferenceActivity,是Settings的主界面,它通过loadHeadersFromResource函数加载res/xml/settings_headers.xml来构造界面。在settings_headers.xml中声明了要在Settings主界面显示的各个header(如Sound、Display等)。
4、我们使用hierarchyviewer时Settings中的很多界面显示的都是SubSettings
要解决这个问题我们先要清楚为什么会写一个SubSettings.java继承自Settings.java?
SubSettings.java中的注释很清楚的告诉了我们原因:Stub class for showing sub-settings; we can't use the main Settings class since for our app it is a special singleTask class。原来是因为Settings.java在声明时指定了android:launchMode="singleTask"。
5、hierarchyviewer中显示SubSetting时如何确定我进入的是哪个fragment?
在res/xml/settings_headers.xml中声明了各个header被点击后使用的fragment。我们可以根据这个文件确定我们进入的fragment。
例如,当我们点击Display时hierarchyviewer中显示SubSetting。我们通过查找settings_headers就可知道使用的是哪个fragment。
Display这个header在settings_headers.xml中的声明:
<!-- Display -->
<header
android:id="@+id/display_settings"
android:icon="@drawable/ic_settings_display"
android:fragment="com.android.settings.DisplaySettings"
android:title="@string/display_settings" />
header中使用android:fragment指明使用的fragment。由此可知,Display使用的是com.android.settings.DisplaySettings这个fragment。
6、点击设置界面的某一个header时,设置界面是如何切换的?
点击设置界面的header时,会触发Settings中onHeaderClick函数,主要的处理都在其父类PreferenceActivity的onHeaderClick中实现的。如果这个header指定了fragment,在mSinglePane为true时,会调用startWithFragment方法,在startWithFragment方法中将调用onBuildStartFragmentIntent方法来构造intent对象(重要),最后使用该intent对象启动一个activity来显示fragment。
- android settings学习笔记(二)-细节分析
- android settings学习笔记(一)
- Settings模块分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display 之 Settings 源码分析(二)
- Android 4.2 Wifi Display之Settings源码分析(二)
- Android系统设置settings应用学习(二)--源代码解析
- android学习笔记(二) 之 android工程文件分析
- React Native 学习笔记十六(细节分析)
- android settings源代码分析(1)
- android settings源代码分析(2)
- android settings源代码分析(1)
- android settings源代码分析(2)
- Android开发 Settings源代码分析(1)
- C++ Debug Tips
- Linux 查看CPU信息、机器型号等硬件信息
- 文章标题过长 ,造成文字换行
- float类型在内存中的表示
- 关于Spring+3.x企业应用开发实战书中:ant building spring3.x依赖包
- android settings学习笔记(二)-细节分析
- Unity的Lerp函数实现缓动
- 获取子系统的相应菜单(无限迭代)
- linux下samba安装并且实现共享目录
- extern "C" : C++和C的混合编程
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案
- java 中定义的final常量
- Fragments (Android官方文档中文版)
- 开发者职业生涯调查之未来:30岁以后我们做什么?