Android ApiDemos示例解析(30) App->Preferences->Preferences from XML

我们在前面的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 介绍了可以使用Shared Preferences来存储一些状态,Shared Preferences更一般的用法是用来存储一些应用程序偏好(设置)。 包 android.preference 提供了很多类可以方便应用程序来显示和设置应用相关的偏好。当然你可以使用自定义的UI来配置这些程 序偏好。但使用android.preference中定义的类可以给用户一个统一的UI (和Android本身的Settings一致)。

通常情况下 ,程序偏好使用单独的Activity(派生于PreferenceActivity)来完成。在PreferenceActivity中,PreferenceScreen为Layout 的root element ,它可以包含其它如:CheckBoxPreference ,EditTextPreference, ListPreference ,PreferenceCategory或 RingtonPreference. 使用Preference时所有程序偏好将会自动保存在应用程序的SharedPreferences中, 应用可以通过 getSharedPreferences() 来访问这些偏好设置。

CheckBoxPreference 使用Checkbox 来显示某个配置项。

EditTextPreference 使用文本框来显示某个牌子项,允许接受用户输入文本。

ListPreference 使用一组单选钮 (列表)可以从中选择某一项。

MultiSelectListPreference 使用一组Checkbox,允许该配置项有多值。

RingtonPreference 允许用户从选取某个铃声

这些类的基类为Preference ,以它为基类,也可以定义自定义的Preference.

PreferenceGroup 可以为多个Preference定义一个组,PreferenceCategory, PreferenceScreen为它的子类。

PreferenceCategory 同样可以包含多个Preferneces ,如果该组被Disable时,可以提供一个标题。

PreferenceScreen 为 Preferences层次结构的根元素,PreferenceScreen可以实现嵌套。内层的PreferenceScreen将会使用 一个新的屏幕显示,有点类似于Word中的分页功能。

Preferences from XML 介绍了使用XML来定义应用程序偏好,并使用PreferenceActivity来显示这个偏好。

时间: 2024-10-23 12:49:25

Android ApiDemos示例解析(30) App->Preferences->Preferences from XML的相关文章

Android ApiDemos示例解析(35):App->Preferences->Advanced preferences

前篇文章Android ApiDemo示例解析(31):App->Preferences->Launching preferences 中用到了Advanced preferences 中定义的AdvancedPreferences. 本篇具体介绍AdvancedPreferences, 这个例子称为Advanced ,是因为 它涉及到了自定义Preference, 并在一个工作线程中刷新某个Preference的值. Preference 为显示在 PreferenceActivity (一

Android ApiDemos示例解析(31):App->Preferences->Launching preferences

前给例子介绍了如何使用PreferenceActivity 来显示修改应用偏好,用户对Preferences的修改自动存储在应用对应的 Shared Preferences中. 本例介绍了如何从一个Activity来取得由PreferenceActivity 的Preference值. 比如在实际 应用中通过PreferenceActivity界面来取得用户偏好或是配置. 因为希望从PreferenceActivity返回值,所以使用 startActivityForResult 来启动Pref

Android ApiDemos示例解析(43):App->Service->Remote Service Controller

Remote Service Controller 和使用Local Service的Android ApiDemo示例解析(40):App->Service->Local Service Controller 都是使用Service的"Started" 模式,RemoteService在 AndroidManifest.xml中的定义如下: <service android:name=".app.RemoteService" android:pr

Android ApiDemos示例解析(37):App-&amp;gt;Search-&amp;gt;Query Search Results

这个例子单独运行时(从Launcher启动),这时接受到的Intent不含ACTION_SEARCH,和一个普通的Activity没有什么两样. 在例(36)时,它是作为查询处理Activity用于显示用户查询内容. SearchQueryResults 在AndroidManifest.xml定义为 Searchable Activity: <intent-filter> <action android:name="android.intent.action.SEARCH&q

Android ApiDemos示例解析(14) App-&amp;gt;Activity-&amp;gt;Save &amp;amp; Restore State

Save & Restore State与之前的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 实现的 UI类似,但功能和实现方法稍有不同.(9)是通过Shared Preferences 和 Activity 的onPause() ,和onResume()来保持UI中 EditText 的值.本例是通过onSaveInstanceState(Bundle savedBundle) 来实现保持UI状态. 和onPause

Android ApiDemos示例解析(21) App-&amp;gt;Device Admin

Device Admin示例介绍了类DeviceAdminReceiver,DevicePolicyManager和ActivityManager. 类 DevicePolicyManager 用于管理Android设备定义的一些策略,主要指密码定义的长度,密码是否要含大写字母,小写字母等设 置密码需要满足的规范,锁定设备或是清除所有用户数据,这个类一般需要配合DeviceAdminReceiver来使用. DeviceAdminReceiver派生于BroadcastReceiver,可以接受

Android ApiDemos示例解析(19) App-&amp;gt;Alarm-&amp;gt;Alarm Controller

Alarm Controller演示如何在Android应用中使用Alarm事件,其功能和java.util.Timer ,TimerTask类似.但Alarm可以即使 当前应用退出后也可以做到Schedule一个任务在指定的时刻执行. AlarmManager 用于管理Alarm事件,支持单次执行或 重复执行. 和大都数Android服务一样,AlarmManager也是通过getSystemService来获取服务对象: AlarmManager am = (AlarmManager)get

Android ApiDemos示例解析(13) App-&amp;gt;Activity-&amp;gt;Reorder Activities

Reorder Activities 示例有四个相关的Activitives: ReorderOnLaunch, ReorderTwo,ReorderThree, ReorderFour.其中ReorderOnLaunch为主Activity,ReorderOnLaunch启动ReorderTwo ,ReorderTwo启动 ReorderThree,ReorderThree启动 ReorderFour. 这时在Activity的"back stack"有如下状态: ReorderFo

Android ApiDemos示例解析(12) App-&amp;gt;Activity-&amp;gt;Redirection

Redirection示例涉及到三个Acitivity: RedirectEnter, RedirectMain,RedirectGetter.示例的主Activity为 RedirectEnter ,RedirectEnter 启动 RedirectMain, 而Activity 会根据某个条件来决定是否将应用的控制权传给 RedirectGetter 或是保持在RedirectMain. 应用代码中使用到了Shared Preferences (在之前的示例中介绍过). RedirectMa