Android PreferenceActivity介绍

本文介绍如何在Android应用中实现参数设置界面及存储功能。通过PreferencesActivity构建设置界面,并利用xml文件定义不同类型的设置项,如CheckBoxPreference、ListPreference等。

在开发应用程序的过程中我们有很大的机会需要用到参数设置功能,那么在Android应用中,我们如何实现参数设置界面及参数存储呢,下面我们来介绍一下Android中的一个特殊Activity–PreferencesActivity。PreferencesActivity是Android中专门用来实现程序设置界面及参数存储的一个Activity,我们用一个实例来简介如何使用PreferencesActivity。

以此为例我们来介绍一下如何实现这个界面。首先建立一个xml来描述这个界面,文件为res/xml/preferences.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="PreferenceCategory 1"> <CheckBoxPreference android:key="CheckBox1" android:title="CheckBox" android:summaryOn="某功能: 开启" android:summaryOff="某功能: 关闭" android:defaultValue="true" /> </PreferenceCategory> <PreferenceCategory android:title="PreferenceCategory 2"> <PreferenceScreen android:title="二级PreferenceScreen"> <CheckBoxPreference android:key="CheckBox2" android:title="CheckBox" android:summaryOn="某功能: 开启" android:summaryOff="某功能: 关闭" android:defaultValue="true" /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="PreferenceCategory 3"> <ListPreference android:key="ListPreference" android:title="ListPreference" android:summary="ListPreference测试" android:dialogTitle="ListPreference" android:entries="@array/entries_list_preference" android:entryValues="@array/entriesvalue_list_preference" /> <EditTextPreference android:key="EditTextPreference" android:title="EditTextPreference" android:summary="点击输入" android:dialogTitle="输入设置" /> <RingtonePreference android:key="RingtonePreference" android:title="RingtonePreference" android:summary="选择铃声" /> </PreferenceCategory> </PreferenceScreen>

这个例子中包括了PreferenceActivity中常见的几种组件,以下为具体介绍及用法:

PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题。

PreferenceCategory:某一类相关的设置,可用Title参数设置标题。

CheckBoxPreference:是一个CheckBox设置,只有两种值,true或false,可用Title参数设置标题,用summaryOn和summaryOff参数来设置控件选中和未选中时的提示。

ListPreference:下拉框选择控件,用Title参数设置标题,用Summary参数设置说明,点击后出现下拉框,用dialogTitle设置下拉框的标题,下拉框内显示的内容和具体的值需要在res/values/array.xml中设置两个array来表示。图中的array.xml设置如下:

<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="entries_list_preference"> <item>test1</item> <item>test2</item> <item>test3</item> </string-array> <string-array name="entriesvalue_list_preference"> <item>1</item> <item>2</item> <item>3</item> </string-array> </resources>

EditTextPreference:输入框控件,点击后可输入字符串设置。用Title参数设置标题,Summary参数设置说明,dialogTitle参数设置输入框的标题。

RingtonePreference:铃声选择框,点击后可选择系统铃声。Title参数设置标题,Summary参数设置说明,dialogTitle参数设置铃声选择框的标题。

附Activity代码如下:

public class SettingActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } }

以上是PreferenceActivity的xml描述,那么在程序中我们只需要新建一个继承自PreferenceActivity的Activity,然后在主程序中调用addPreferencesFromResource(XML的ID) 就可以了。这个PreferenceActivity中的设置存储是完全自动的,你不需要再用代码去实现设置的存储,PreferenceActivity创建后会自动创建一个配置文件/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自动生成的配置文件如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="EditTextPreference">12332312</string> <string name="ListPreference">2</string> <string name="RingtonePreference">content://settings/system/ringtone</string> <boolean name="CheckBox1" value="true" /> <boolean name="CheckBox2" value="true" /> </map>THE END!


冒泡排序(Bubble Sort)是一种基础的排序算法,其核心思想是通过多次遍历数组,依次比较相邻元素并在顺序错误时交换它们。尽管冒泡排序在性能上不如更复杂的排序算法(如快速排序或归并排序),但由于其实现简单,它常被用于教学目的或小型数据集的排序。 以下是C++冒泡排序算法的实现示例: ```cpp #include <iostream> using namespace std; void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; ++i) { // 每一轮遍历将最大的元素“冒泡”到末尾 for (int j = 0; j < n - i - 1; ++j) { if (arr[j] > arr[j + 1]) { // 交换相邻元素 swap(arr[j], arr[j + 1]); } } } } void printArray(int arr[], int size) { for (int i = 0; i < size; ++i) cout << arr[i] << " "; cout << endl; } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Original array: "; printArray(arr, n); bubbleSort(arr, n); cout << "Sorted array: "; printArray(arr, n); return 0; } ``` ### 代码说明: 1. **`bubbleSort` 函数**:该函数接受一个整型数组 `arr` 和其长度 `n`,通过嵌套循环实现冒泡排序。外层循环控制排序的轮数,内层循环用于比较相邻元素并进行交换。 2. **优化(可选)**:如果某次遍历中没有发生任何交换,说明数组已经有序,可以提前终止排序过程。这可以提高冒泡排序在最佳情况下的时间复杂度至 O(n)。 3. **`printArray` 函数**:该函数用于打印数组的内容。 4. **`main` 函数**:初始化一个未排序的数组,并调用 `bubbleSort` 函数进行排序,然后输出排序后的数组。 冒泡排序的时间复杂度为 O(n²),其中 n 是数组的长度。由于其效率较低,冒泡排序通常不适用于大规模数据集。然而,它对于初学者理解排序算法的基本原理具有重要意义。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值