发现preferencescreen 首选项非常好用

个人感觉在设置页面和用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()方法

PreferenceScreen 是 Android 中的一个 UI 组件,它提供了一种结构化的方式来呈现应用程序的设置选项。它是 Preference 类的子类,可以包含多个 Preference 类的实例,例如 CheckBoxPreference、EditTextPreference 等。当用户点击 PreferenceScreen 中的某个选项时,会进入一个新的 PreferenceScreen 或者打开一个 Dialog,让用户进行相应的设置。 在实现 PreferenceScreen 的时候,需要在布局文件中使用 PreferenceScreen 标签,如下所示: ```xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 包含多个 Preference 类的实例 --> </PreferenceScreen> ``` 在 java 代码中,可以使用 PreferenceFragment 或者 PreferenceActivity 来管理 PreferenceScreen。 PreferenceFragment 是一个 Fragment,它可以被添加到 Activity 中。在 PreferenceFragment 中,可以通过调用 addPreferencesFromResource(int) 方法来加载一个 PreferenceScreen 布局文件。例如: ```java public class MyPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } ``` PreferenceActivity 是一个 Activity,它继承自 ListActivity。在 PreferenceActivity 中,可以通过调用 addPreferencesFromResource(int) 方法来加载一个 PreferenceScreen 布局文件。例如: ```java public class MyPreferenceActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } ``` 需要注意的是,从 Android 11 开始,推荐使用 PreferenceFragmentCompat 替代 PreferenceFragment。PreferenceFragmentCompat 是一个兼容库,可以在 Android 4.0 及以上版本中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值