Settings是android系统设置的入口。主界面由Settings.java以及settings_headers.xml构成。
Settings类继承自PreferenceActivity,而PreferenceActivity又继承自ListActivity,ListActivity拥有ListView和ListAdapter类型的成员变量。
1,如何使用PreferenceActivity构建页面
使用addPreferencesFromIntent或者addPreferencesFromResource将定义了headers的内容(如果是从resource中加载,那么一般是放在xml文件夹下的文件)加载进PreferenceActivity。每一个定义的header就是ListView中的一行View,当然,显示出来的样式会不同,比如分类标题“无线和网络”和下面的“WLAN”其实都是一个header。
类似于ListView的使用,我们在ListAdapter的getView方法中,可以使用额外的布局文件,对每一行进行UI定制。比如wlan和bt有开关,那么就用layout下的perference_header_switch_item.xml来构建view。
在构造各种页面组件时用了系统内部属性,如holder.title = (TextView)view.findViewById(com.android.internal.R.id.title);
每一个header对应一个fragment,在settings_headers.xml中使用标签指定,如android:fragment="com.android.settings.wifi.WifiSettings"
2,开关(switch)的处理
以WLAN开关举例,在Settings中会构建WifiEnabler的实例,将实例化的switch传给WifiEnabler,后续的开关状态维护,点击事件监听全都交给WifiEnabler来处理了。
3,设置值的存储
在Settings的OnCreate函数中,就出现了getSharedPreferences,所以设置的值将存储于“/data/data/com.android.settings/shared_prefs”下的com.android.settings_preferences.xml里。