PreferenceActivity是Android中用来设置应用程序的类,在Android的应用程序中,设置界面通常以PreferenceActivity形式出现。PreferenceActivity的使用方式与普通Activity类似,但是在布局文件和代码中有一些特殊之处,接下来我们将详细介绍PreferenceActivity的使用方式,并给出一个简单的案例说明。
一、布局文件
PreferenceActivity的布局文件使用的是XML来定义。在布局文件中,主要包括Preference层级结构和Preference的属性设置两部分内容。
1、Preference层级结构
Preference的层级结构就好比一个树状结构。在PreferenceActivity的布局文件中,我们可以通过使用PreferenceScreen来定义Preference层级结构。例如,下面的布局文件中,我们定义了一个PreferenceScreen,它包含了两个Preference节点:PreferenceCategory和CheckBoxPreference,其中,PreferenceCategory节点是用来分类显示的。
```
android:title="Checkbox Preference"
android:defaultValue="false"
android:summary="This preference allows to enable/disable something" />
android:title="Checkbox Preference 2"
android:defaultValue="false"
android:summary="This preference allows to enable/disable something" />
```
2、Preference属性设置
Preference节点包含了一些属性,通过这些属性我们可以设置Preference的显示样式、默认值、键值等。下面是常用的一些属性:
(1)android:key:Preference的ID,用于读取和保存Preference的值。
(2)android:title:Preference的标题。
(3)android:summary:Preference的摘要说明。
(4)android:defaultValue:Preference的默认值。
我们可以在Preference节点中根据需要设置他们,例如在上面的布局文件中,我们设置了两个CheckBoxPreference节点,它们的属性设置基本一致,其中,android:key和android:title是必须设置的属性。
二、代码实现
1、自定义PreferenceActivity
与普通的Activity类似,我们需要继承PreferenceActivity类。在onCreate方法中,我们需要使用addPreferencesFromResource方法将上面布局文件中定义的Preference层级结构加载进来。
而且,由于PreferenceActivity默认载入的布局文件为PreferenceScreen,如果我们需要使用自定义的布局文件,需要在onCreate方法中通过setContentView方法加载自定义布局文件。例如:
```
public class SettingsActivity extends PreferenceActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
```
2、读取和保存Preference的值
我们可以通过Preference类的getSharedPreferences()方法获取SharedPreferences对象,从而方便地读取和保存Preference的值。其中,getSharedPreferences方法的第一个参数为Preference的名称,如果不设置则使用默认值,这里我们设置为"pref"。
```
SharedPreferences preferences = getSharedPreferences("pref", MODE_PRIVATE);
boolean isChecked = preferences.getBoolean("checkbox_preference", false);
```
而保存Preference的值只需调用SharedPreferences.Editor的putBoolean方法即可。
```
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("checkbox_preference", true);
editor.commit();
```
三、案例说明
下面我们来举一个简单的例子:在设置界面中设置一个CheckBoxPreference,当用户打开这个选项时,应用程序会开启自动播放功能。
1、布局文件
我们在res/xml文件夹下新建一个preferences.xml文件,代码如下:
```
android:title="自动播放"
android:defaultValue="false"
android:summary="勾选后,程序完成启动后自动播放视频" />
```
2、代码实现
(1)新建一个SettingsActivity类,代码如下:
```
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
private CheckBoxPreference mCheckBoxPreference;
private boolean mAutoPlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mCheckBoxPreference = (CheckBoxPreference) findPreference("auto_play");
mAutoPlay = mCheckBoxPreference.isChecked();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("auto_play")) {
mAutoPlay = sharedPreferences.getBoolean(key, false);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
}
```
(2)在MainActivity类中,添加跳转到SettingsActivity的代码,并添加一个自动播放的方法,代码如下:
```
public class MainActivity extends AppCompatActivity {
private boolean mAutoPlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_settings).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent);
}
});
}
private void startAutoPlay() {
if (mAutoPlay) {
//开始自动播放
}
}
@Override
protected void onResume() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
mAutoPlay = preferences.getBoolean("auto_play", false);
startAutoPlay();
super.onResume();
}
}
```
最后,当我们勾选了自动播放选项后,程序启动后会立即开始自动播放。当我们取消勾选后,程序启动后不会自动播放,需要手动点击播放按钮。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/
发表评论 取消回复