个人感觉在设置页面和用sharedPreferece记录控件的状态,用prefeerenceScreen是很好用的.
1.使用步骤
在res目录创建xml目录,创建就有提示了.在其他目录是不会用Preferencescreen提示的
代码如下:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > android:title="preference" > <CheckBoxPreference android:title="首选项" android:summary="你好" android:key="key" android:defaultValue="1" ></CheckBoxPreference> <EditTextPreference android:title="EditTextPreference" android:key="et" android:defaultValue="nihao" ></EditTextPreference> <SwitchPreference android:switchTextOff="off" android:switchTextOn="on" android:key="on_off" android:title="打开电源" android:defaultValue="true" ></SwitchPreference> <RingtonePreference android:key="rpf" android:title="手机铃声" ></RingtonePreference> <ListPreference android:key="lpf" android:title="单选" android:dialogTitle="你是谁" android:dialogIcon="@mipmap/ic_launcher" android:entries="@array/lpf" android:dialogLayout="@layout/activity_main" android:entryValues="@array/lpf_value" android:defaultValue="1" ></ListPreference> <MultiSelectListPreference android:key="mlp" android:title="多选" android:dialogTitle="你是谁" android:dialogIcon="@mipmap/ic_launcher" android:entries="@array/lpf" android:dialogLayout="@layout/activity_main" android:entryValues="@array/lpf_value" ></MultiSelectListPreference> </PreferenceScreen>
作用差不多写在title里面了.
2.然后创建fragment:
public class PreferenceTest extends PreferenceFragment implements SharedPreferences .OnSharedPreferenceChangeListener { private SharedPreferences sf; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); sf = PreferenceManager .getDefaultSharedPreferences(getActivity()); sf.registerOnSharedPreferenceChangeListener(this); addPreferencesFromResource(R.xml.preferencetest); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Toast.makeText(getActivity(), "key"+key, Toast.LENGTH_SHORT).show(); } @Override public void onDestroy() { super.onDestroy(); sf.unregisterOnSharedPreferenceChangeListener(this); } }
3.然后跟普通的Fragment一样在activity添加就可以了
效果如下:
ps:因为大小限制,所以选择分辨率很低,MP4togif软件在这里下很好用 http://www.amazing-share.com/freeware-center.html#video-to-gif-converter
保存文件如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="lpf">2</string>
<set name="mlp">
<string>3</string>
<string>2</string>
</set>
<string name="et">nidaye</string>
<boolean name="on_off" value="false" />
<boolean name="key" value="true" />
<string name="rpf">content://media/internal/audio/media/140</string>
</map>
第三步,也可以把换
preference-headers
步骤如下 在res/xml下创建xxx.xml代码如
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> <header android:fragment="com.yy.crf.appdevelopemntrecord.PreferenceTest" android:title="个人设置" android:id="@+id/set" android:icon="@mipmap/ic_launcher" ></header> <header android:fragment="com.yy.crf.appdevelopemntrecord.PreferenceTest" android:title="个人设置" android:id="@+id/set1" android:icon="@mipmap/ic_launcher" ></header> </preference-headers>
2.然后在activity中加载这个文件就可以了
@Override public void onBuildHeaders(List<Header> target) { super.onBuildHeaders(target); loadHeadersFromResource(R.xml.header,target); }
ps:要继承preferenceActivity,才能重写这个方法,而且不能使用setContentView()方法