android 开发-系统设置界面的实现

具体与Preference的用法类似,这里就不做过多解释,直接贴示例代码,需要在res下新建xml文件夹,在xml文件夹下添加xml文件。

  xml:(注意:root节点是:PreferenceScreen)

技术分享
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
 3 
 4     <!-- 类别 -->
 5     <PreferenceCategory
 6         android:key="mylocation"
 7         android:summary="我的位置源"
 8         android:title="我的位置" >
 9 
10         <!-- 可以加各种其他控件如 :CheckBoxPreference -->
11         <CheckBoxPreference
12             android:key="wireless_network"
13             android:summary="使用无线网络查看应用程序(例如Google地图中的位置)"
14             android:title="使用无线网络" />
15         <CheckBoxPreference
16             android:key="gps_satellite_setting"
17             android:summary="定位时,精确到接到级别(取消选择可节约电量)"
18             android:title="启用GPS卫星导航" />
19     </PreferenceCategory>
20     <PreferenceCategory
21         android:key="myMessage"
22         android:summary="个人信息设置"
23         android:title="个人信息设置" >
24         <CheckBoxPreference
25             android:key="yesno_save_individual_info"
26             android:title="是否保存个人信息" />
27 
28         <EditTextPreference
29             android:key="individual_name"
30             android:summary="请输入真实姓名"
31             android:title="姓名" />
32 
33         <ListPreference
34             android:entries="@array/citys"
35             android:entryValues="@array/citys"
36             android:key="mycity"
37             android:summary="所属城市"
38             android:title="城市列表" />
39     </PreferenceCategory>
40 
41 </PreferenceScreen>
setting.xml

  activity

 1 package com.example.android_data_storage_share2;
 2 
 3 import android.os.Bundle;
 4 import android.preference.CheckBoxPreference;
 5 import android.preference.EditTextPreference;
 6 import android.preference.ListPreference;
 7 import android.preference.Preference;
 8 import android.preference.Preference.OnPreferenceChangeListener;
 9 import android.preference.PreferenceActivity;
10 import android.preference.PreferenceScreen;
11 import android.widget.Toast;
12 
13 /**
14  * @author xiaowu
15  * @NOTE: 状态改变后的自动文件存储 需要继承PreferenceActivity的类和实现OnPreferenceChangeListener接口,重写onPreferenceTreeClick方法进行业务逻辑处理
16  */
17 public class MainActivity extends PreferenceActivity implements
18         OnPreferenceChangeListener {
19 
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         // setContentView(R.layout.activity_main);
24         // 加载设置的底层界面 API11之前可以使用下面的方式,而高版本使用perferenceFragment,
25         addPreferencesFromResource(R.xml.setting);
26         //得到屏幕管理器并设置它的名称
27 //        getPreferenceManager().setSharedPreferencesName("mysetting2");
28 //        addPreferencesFromResource(R.xml.mysetting);
29     }
30 
31     // 通过preference找到某个节点
32     @Override
33     public boolean onPreferenceChange(Preference preference, Object newValue) {
34         // TODO Auto-generated method stub
35         return false;
36     }
37 
38     // 如果需要勾选一项后,其他项不可用,需要重写方法onPreferenceTreeClick(PreferenceScreen
39     // preferenceScreen,Preference preference),并在该方法中处理业务逻辑
40     @Override
41     @Deprecated
42     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
43             Preference preference) {
44         if ("yesno_save_individual_info".equals(preference.getKey())) {
45             CheckBoxPreference checkBoxPreference = (CheckBoxPreference) findPreference("yesno_save_individual_info");
46             EditTextPreference editTextPreference = (EditTextPreference) findPreference("individual_name");
47             editTextPreference.setEnabled(checkBoxPreference.isChecked());
48             // ListPreference listPreference = (ListPreference)
49             // findPreference("mycity");
50             // listPreference.setEnabled(false);
51         }
52         // TODO Auto-generated method stub
53         return super.onPreferenceTreeClick(preferenceScreen, preference);
54     }
55 
56 }

   效果展示:

  技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。