Android中Preferences的基本使用


 在開發應用程序的過程中我們有很大的機會需要用到參數設置功能,那么在Android應用中,我們如何實現參數設置界面及參數存儲呢,下面我們來介紹一下Android中的一個特殊Activity–PreferencesActivity。PreferencesActivity是Android中專門用來實現程序設置界面及參數存儲的一個Activity,我們用一個實例來簡介如何使用PreferencesActivity。

通過查看SDK自帶的ApiDemo可以發現,里面有一個類叫PreferenceActivity,里面的第一個例子是通過xml文件來實現的,其它的還沒研究(首先通過Eclipse把ApiDemo安裝到手機上,然后從手機上打開,選擇第一個App,大概在第二頁的樣子就有一個Preferences,點進去就有了),稍微整理了一下,發出來。。。

按照慣例,還是先發圖看看效果,如果不是你們所要的效果,也不浪費你們的時間

效果圖就是這樣了,現在就開始碼代碼吧。。。

注意這個界面並非傳統的layout布局格式!!!

在res目錄下面新建一個文件夾xml,然后在里面新建文件preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

<PreferenceCategory android:title="@string/inline_preferences" >

<CheckBoxPreference
android:key="checkbox_preference"
android:summary
="@string/summary_toggle_preference"
android:title
="@string/title_toggle_preference" />
</PreferenceCategory>

<PreferenceCategory android:title="@string/dialog_based_preferences" >

<EditTextPreference
android:dialogTitle="@string/dialog_title_edittext_preference"
android:key
="edittext_preference"
android:summary
="@string/summary_edittext_preference"
android:title
="@string/title_edittext_preference" />

<ListPreference
android:dialogTitle="@string/dialog_title_list_preference"
android:entries
="@array/entries_list_preference"
android:entryValues
="@array/entryvalues_list_preference"
android:key
="list_preference"
android:summary
="@string/summary_list_preference"
android:title
="@string/title_list_preference" />
</PreferenceCategory>

<PreferenceCategory android:title="@string/launch_preferences" >

<PreferenceScreen
android:key="screen_preference"
android:summary
="@string/summary_screen_preference"
android:title
="@string/title_screen_preference" >

<CheckBoxPreference
android:key="next_screen_checkbox_preference"
android:summary
="@string/summary_next_screen_toggle_preference"
android:title
="@string/title_next_screen_toggle_preference" />
</PreferenceScreen>

<PreferenceScreen
android:summary="@string/summary_intent_preference"
android:title
="@string/title_intent_preference" >

<intent
android:action="android.intent.action.VIEW"
android:data
="http://www.baidu.com" />
</PreferenceScreen>
</PreferenceCategory>

<PreferenceCategory android:title="@string/preference_attributes" >

<CheckBoxPreference
android:key="parent_checkbox_preference"
android:summary
="@string/summary_parent_preference"
android:title
="@string/title_parent_preference" />

<CheckBoxPreference
android:dependency="parent_checkbox_preference"
android:key
="child_checkbox_preference"
android:layout
="?android:attr/preferenceLayoutChild"
android:summary
="@string/summary_child_preference"
android:title
="@string/title_child_preference" />
</PreferenceCategory>

</PreferenceScreen>

當然里面用到了一些字符串,定義在Strings.xml文件里面的

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">Preferences_Demo</string>
<string name="inline_preferences">In-line preferences</string>
<string name="title_toggle_preference">Toggle preference</string>
<string name="summary_toggle_preference">This is a toggle button</string>
<string name="dialog_based_preferences">Dialog-based preferences</string>
<string name="title_edittext_preference">Edit text preference</string>
<string name="dialog_title_edittext_preference">Enter your favorite animal</string>
<string name="summary_edittext_preference">An example that uses an edit text dialog</string>
<string name="title_list_preference">List preference</string>
<string name="summary_list_preference">An example that uses a list dialog</string>
<string name="preference_attributes">Preference attributes</string>
<string name="title_parent_preference">Parent toggle</string>
<string name="summary_parent_preference">This is visually a parent</string>
<string name="title_child_preference">Child toggle</string>
<string name="summary_child_preference">This is visually a child</string>
<string name="title_next_screen_toggle_preference">Toggle preference</string>
<string name="summary_next_screen_toggle_preference">Preference that is on the next screen but same hierarchy</string>
<string name="title_intent_preference">Intent preference</string>
<string name="summary_intent_preference">Launches an Activity from an Intent</string>
<string name="title_screen_preference">Screen preference</string>
<string name="summary_screen_preference">Shows another screen of preferences</string>
<string name="dialog_title_list_preference">Choose one</string>
<string name="launch_preferences">Launch preferences</string>

</resources>

還有兩個array數組,在values文件夾下面建一個arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string-array name="entries_list_preference">
<item>Alpha Option 01</item>
<item>Beta Option 02</item>
<item>Charlie Option 03</item>
</string-array>
<string-array name="entryvalues_list_preference">
<item>alpha</item>
<item>beta</item>
<item>charlie</item>
</string-array>

</resources>

OK,下面寫主類MainActivity,它繼承自PreferenceActivity

package com.and.preferences;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class MainActivity extends PreferenceActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}

行了,ApiDemo里面好像還提供幾種,有待於研究。。。。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM