2024年3月7日发(作者:)
目录
PreferenceFragment简介
PreferenceFragment使用
PreferenceFragment 扩展
PreferenceFragment简介
在们写一个的时候,基本都有选项设置界面,这类设置界面的原理基本都本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,Android专门为这种Activity了便捷的基类PreferenceActivity(如果Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内部装了Preference,会帮们自动读写设置,方便发者便捷完成这类功能。
PreferenceFragment使用
PreferenceFragment位于ence包下,现在推荐使用v7包下的,这里还使用这个来说明,原理一样的。
先来使用下:
在res目录下创建xml目录
在xml目录下创建xml文件(文件名自己定义即可)
这里演示的文件pref_
继承PreferenceFragment,在onCreate方法中调用aPreferencesFromResource方法加载xml目录下的资源即可
public class PreferenceTestFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
aPreferencesFromResource(_setting);//加载xml文件
}
}
运行:
pref_中使用的控件可以查看ence包下,这里面有几个常用的属性:
属性名
android:key
用途
存储key,这个就SharedPreferences存储时的key
android:title
标题
android:defaultValue
默认值
设置击
findPreference("setting_no_img").setOnPreferenceClickListener(new
erenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//todo
return true;
}
});
findPreference中的key就xml中声明的key。
可以使用registerOnSharedPreferenceChangeListener来监听SharedPreferences值改变。
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
PreferenceFragment 扩展
可以通过继承Preference来实现自定义控件
public class ThemePreference extends Preference {
private CircleView circleImageView;
public ThemePreference(Context context, AttributeSet attrs) {
super(context, attrs);
// 加载布局文件
setWidgetLayoutResource(_theme_preference_preview);
}
// 绑定视图
@Override
protected void onBindView(View view) {
View(view);
int color = tance().getThemeColor();
circleImageView = (CircleView) ewById(_preview);
kgroundColor(color);
}
/**
* 刷新颜色显示
*/
public void updateColor() {
kgroundColor(tance().getThemeColor());
}
}


发布评论