歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android之用XML文件對程序進行配置

Android之用XML文件對程序進行配置

日期:2017/3/1 11:17:15   编辑:Linux編程

有些程序可以配置,用來讓用戶設置有些自定義的偏好

可以通過SharedPreference來保存程序運行時用戶的狀態以及用戶輸入過的數據,當然我們也可以通過一些自定義的內容來讓用戶對該程序進行設置

用戶設子界面的調用

  1. public class PreferencesFromXml extends PreferenceActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. // Load the preferences from an XML resource
  6. addPreferencesFromResource(R.xml.preferences);
  7. }
  8. }

在自定義用戶也配置界面的時候需要用到PreferenceScreen來進行設置

如下所示:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen
  3. xmlns:Android="http://schemas.android.com/apk/res/android">
  4. <PreferenceCategory
  5. android:title="@string/inline_preferences">
  6. //復選框的設置
  7. <CheckBoxPreference
  8. android:key="checkbox_preference"
  9. android:title="@string/title_toggle_preference"
  10. android:summary="@string/summary_toggle_preference" />
  11. </PreferenceCategory>
  12. <PreferenceCategory
  13. android:title="@string/dialog_based_preferences">
  14. //編輯框的設置
  15. <EditTextPreference
  16. android:key="edittext_preference"
  17. android:title="@string/title_edittext_preference"
  18. android:summary="@string/summary_edittext_preference"
  19. android:dialogTitle="@string/dialog_title_edittext_preference" />
  20. //下拉列表框 設置
  21. <ListPreference
  22. android:key="list_preference"
  23. android:title="@string/title_list_preference"
  24. android:summary="@string/summary_list_preference"
  25. android:entries="@array/entries_list_preference"
  26. android:entryValues="@array/entryvalues_list_preference"
  27. android:dialogTitle="@string/dialog_title_list_preference" />
  28. </PreferenceCategory>
  29. //下面的一個版塊都是跳轉到另外一個屏幕
  30. <PreferenceCategory
  31. android:title="@string/launch_preferences">
  32. <PreferenceScreen
  33. android:key="screen_preference"
  34. android:title="@string/title_screen_preference"
  35. android:summary="@string/summary_screen_preference">
  36. //可以到另外一個屏幕顯示更多的設置信息 復選框
  37. <CheckBoxPreference
  38. android:key="next_screen_checkbox_preference"
  39. android:title="@string/title_next_screen_toggle_preference"
  40. android:summary="@string/summary_next_screen_toggle_preference" />
  41. </PreferenceScreen>
  42. //意圖,用來打開一個網頁
  43. <PreferenceScreen
  44. android:title="@string/title_intent_preference"
  45. android:summary="@string/summary_intent_preference">
  46. <intent android:action="android.intent.action.VIEW"
  47. android:data="http://www.android.com" />
  48. </PreferenceScreen>
  49. </PreferenceCategory>
  50. <PreferenceCategory
  51. android:title="@string/preference_attributes">
  52. <CheckBoxPreference
  53. android:key="parent_checkbox_preference"
  54. android:title="@string/title_parent_preference"
  55. android:summary="@string/summary_parent_preference" />
  56. //下面的復選框依賴於上面的復選框
  57. <CheckBoxPreference
  58. android:key="child_checkbox_preference"
  59. android:dependency="parent_checkbox_preference"
  60. android:layout="?android:attr/preferenceLayoutChild"
  61. android:title="@string/title_child_preference"
  62. android:summary="@string/summary_child_preference" />
  63. </PreferenceCategory>
  64. </PreferenceScreen>

用PreferenceCategory來進行類別的劃分

key選項是用來在調用的時候,進行區別的一個鍵值,如果layout中的 id一樣

在調用的時候

在setContentView之前加上PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

而通過下面的方法就可以獲取到設置的XML文件中的值了

  1. SharedPreferences sharedPref = PreferenceManager
  2. .getDefaultSharedPreferences(this);
  3. final int counter = sharedPref.getInt(
  4. AdvancedPreferences.KEY_MY_PREFERENCE, 0);

在對XML進行配置的時候,我們還可以在XML文件中設置該選項的默認值

只需要在給配置項中添加屬性 android:defaultValue=“”就可以了

當一個設置選項需要依賴於另外一個的時候,例如上面的key為 "child_checkbox_preference"依賴於key為“parent_checkbox_preference”

此時需要對子選項設置兩項內容,一個是其依賴的復選項的key,另一個是設置其屬性為子選項

  1. android:dependency="parent_checkbox_preference"
  2. android:layout="?android:attr/preferenceLayoutChild"
Copyright © Linux教程網 All Rights Reserved