有些程序可以配置,用來讓用戶設置有些自定義的偏好
可以通過SharedPreference來保存程序運行時用戶的狀態以及用戶輸入過的數據,當然我們也可以通過一些自定義的內容來讓用戶對該程序進行設置
用戶設子界面的調用
- public class PreferencesFromXml extends PreferenceActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.preferences);
- }
-
- }
在自定義用戶也配置界面的時候需要用到PreferenceScreen來進行設置
如下所示:
- <?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:title="@string/title_toggle_preference"
- android:summary="@string/summary_toggle_preference" />
-
- </PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/dialog_based_preferences">
- //編輯框的設置
- <EditTextPreference
- android:key="edittext_preference"
- android:title="@string/title_edittext_preference"
- android:summary="@string/summary_edittext_preference"
- android:dialogTitle="@string/dialog_title_edittext_preference" />
- //下拉列表框 設置
- <ListPreference
- android:key="list_preference"
- android:title="@string/title_list_preference"
- android:summary="@string/summary_list_preference"
- android:entries="@array/entries_list_preference"
- android:entryValues="@array/entryvalues_list_preference"
- android:dialogTitle="@string/dialog_title_list_preference" />
-
- </PreferenceCategory>
- //下面的一個版塊都是跳轉到另外一個屏幕
- <PreferenceCategory
- android:title="@string/launch_preferences">
-
- <PreferenceScreen
- android:key="screen_preference"
- android:title="@string/title_screen_preference"
- android:summary="@string/summary_screen_preference">
-
- //可以到另外一個屏幕顯示更多的設置信息 復選框
-
- <CheckBoxPreference
- android:key="next_screen_checkbox_preference"
- android:title="@string/title_next_screen_toggle_preference"
- android:summary="@string/summary_next_screen_toggle_preference" />
-
- </PreferenceScreen>
- //意圖,用來打開一個網頁
- <PreferenceScreen
- android:title="@string/title_intent_preference"
- android:summary="@string/summary_intent_preference">
-
- <intent android:action="android.intent.action.VIEW"
- android:data="http://www.android.com" />
-
- </PreferenceScreen>
-
- </PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/preference_attributes">
-
- <CheckBoxPreference
- android:key="parent_checkbox_preference"
- android:title="@string/title_parent_preference"
- android:summary="@string/summary_parent_preference" />
-
- //下面的復選框依賴於上面的復選框
- <CheckBoxPreference
- android:key="child_checkbox_preference"
- android:dependency="parent_checkbox_preference"
- android:layout="?android:attr/preferenceLayoutChild"
- android:title="@string/title_child_preference"
- android:summary="@string/summary_child_preference" />
-
- </PreferenceCategory>
-
- </PreferenceScreen>
用PreferenceCategory來進行類別的劃分
key選項是用來在調用的時候,進行區別的一個鍵值,如果layout中的 id一樣
在調用的時候
在setContentView之前加上PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
而通過下面的方法就可以獲取到設置的XML文件中的值了
- SharedPreferences sharedPref = PreferenceManager
- .getDefaultSharedPreferences(this);
- final int counter = sharedPref.getInt(
- AdvancedPreferences.KEY_MY_PREFERENCE, 0);
在對XML進行配置的時候,我們還可以在XML文件中設置該選項的默認值
只需要在給配置項中添加屬性 android:defaultValue=“”就可以了
當一個設置選項需要依賴於另外一個的時候,例如上面的key為 "child_checkbox_preference"依賴於key為“parent_checkbox_preference”
此時需要對子選項設置兩項內容,一個是其依賴的復選項的key,另一個是設置其屬性為子選項
- android:dependency="parent_checkbox_preference"
- android:layout="?android:attr/preferenceLayoutChild"