Flutter开发App的未来及其在各行业的应用潜力分析
1018
2022-12-10
Android中PreferenceFragment的使用详解
目录PreferenceFragment简介PreferenceFragment使用PreferenceFragment 扩展
PreferenceFragment简介
在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动-等)。这些设置一般都会使用Preference来保存,android专门为这种Activity提供了便捷的基类PreferenceActivity(如果是Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内部封装了Preference,会帮我们自动读写设置,方便开发者便捷完成这类功能。
PreferenceFragment使用
PreferenceFragment位于android.preference包下,现在推荐使用v7包下的,这里还是使用这个来说明,原理是一样的。
先来使用下:
在res目录下创建xml目录
在xml目录下创建xml文件(文件名自己定义即可)
这里演示的文件是pref_setting.xml
android:defaultValue="false" android:key="setting_no_img" android:summary="仅在WIFI环境下显示图片" android:title="无图模式" /> android:hint="设置用户名" android:key="setting_name" android:title="设置用户名" /> android:key="setting_font_size" android:summary="设置字体大小" android:title="设置字体大小" /> android:defaultValue="false" android:key="setting_switch" android:title="设置模式-Switch" /> android:key="setting_ring" android:title="设置模式-Ringtone" /> 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可 public class PreferenceTestFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_setting);//加载xml文件 } } 运行效果: pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性: 属性名 用途 android:key 存储key,这个就是SharedPreferences存储时的key android:title 标题 android:defaultValue 默认值 设置点击事件 findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @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(R.layout.item_theme_preference_preview); } // 绑定视图 @Override protected void onBindView(View view) { super.onBindView(view); int color = CommonSettingUtil.getInstance().getThemeColor(); circleImageView = (CircleView) view.findViewById(R.id.iv_preview); circleImageView.setBackgroundColor(color); } /** * 刷新颜色显示 */ public void updateColor() { circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor()); } }
android:defaultValue="false"
android:key="setting_no_img"
android:summary="仅在WIFI环境下显示图片"
android:title="无图模式" />
android:hint="设置用户名" android:key="setting_name" android:title="设置用户名" /> android:key="setting_font_size" android:summary="设置字体大小" android:title="设置字体大小" /> android:defaultValue="false" android:key="setting_switch" android:title="设置模式-Switch" /> android:key="setting_ring" android:title="设置模式-Ringtone" /> 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可 public class PreferenceTestFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_setting);//加载xml文件 } } 运行效果: pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性: 属性名 用途 android:key 存储key,这个就是SharedPreferences存储时的key android:title 标题 android:defaultValue 默认值 设置点击事件 findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @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(R.layout.item_theme_preference_preview); } // 绑定视图 @Override protected void onBindView(View view) { super.onBindView(view); int color = CommonSettingUtil.getInstance().getThemeColor(); circleImageView = (CircleView) view.findViewById(R.id.iv_preview); circleImageView.setBackgroundColor(color); } /** * 刷新颜色显示 */ public void updateColor() { circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor()); } }
android:hint="设置用户名"
android:key="setting_name"
android:title="设置用户名" />
android:key="setting_font_size" android:summary="设置字体大小" android:title="设置字体大小" /> android:defaultValue="false" android:key="setting_switch" android:title="设置模式-Switch" /> android:key="setting_ring" android:title="设置模式-Ringtone" /> 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可 public class PreferenceTestFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_setting);//加载xml文件 } } 运行效果: pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性: 属性名 用途 android:key 存储key,这个就是SharedPreferences存储时的key android:title 标题 android:defaultValue 默认值 设置点击事件 findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @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(R.layout.item_theme_preference_preview); } // 绑定视图 @Override protected void onBindView(View view) { super.onBindView(view); int color = CommonSettingUtil.getInstance().getThemeColor(); circleImageView = (CircleView) view.findViewById(R.id.iv_preview); circleImageView.setBackgroundColor(color); } /** * 刷新颜色显示 */ public void updateColor() { circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor()); } }
android:key="setting_font_size"
android:summary="设置字体大小"
android:title="设置字体大小" />
android:defaultValue="false" android:key="setting_switch" android:title="设置模式-Switch" /> android:key="setting_ring" android:title="设置模式-Ringtone" /> 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可 public class PreferenceTestFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_setting);//加载xml文件 } } 运行效果: pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性: 属性名 用途 android:key 存储key,这个就是SharedPreferences存储时的key android:title 标题 android:defaultValue 默认值 设置点击事件 findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @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(R.layout.item_theme_preference_preview); } // 绑定视图 @Override protected void onBindView(View view) { super.onBindView(view); int color = CommonSettingUtil.getInstance().getThemeColor(); circleImageView = (CircleView) view.findViewById(R.id.iv_preview); circleImageView.setBackgroundColor(color); } /** * 刷新颜色显示 */ public void updateColor() { circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor()); } }
android:defaultValue="false"
android:key="setting_switch"
android:title="设置模式-Switch" />
android:key="setting_ring" android:title="设置模式-Ringtone" /> 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可 public class PreferenceTestFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_setting);//加载xml文件 } } 运行效果: pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性: 属性名 用途 android:key 存储key,这个就是SharedPreferences存储时的key android:title 标题 android:defaultValue 默认值 设置点击事件 findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @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(R.layout.item_theme_preference_preview); } // 绑定视图 @Override protected void onBindView(View view) { super.onBindView(view); int color = CommonSettingUtil.getInstance().getThemeColor(); circleImageView = (CircleView) view.findViewById(R.id.iv_preview); circleImageView.setBackgroundColor(color); } /** * 刷新颜色显示 */ public void updateColor() { circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor()); } }
android:key="setting_ring"
android:title="设置模式-Ringtone" />
继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可
public class PreferenceTestFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_setting);//加载xml文件
}
}
运行效果:
pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性:
属性名
用途
android:key
存储key,这个就是SharedPreferences存储时的key
android:title
标题
android:defaultValue
默认值
设置点击事件
findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@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(R.layout.item_theme_preference_preview);
}
// 绑定视图
@Override
protected void onBindView(View view) {
super.onBindView(view);
int color = CommonSettingUtil.getInstance().getThemeColor();
circleImageView = (CircleView) view.findViewById(R.id.iv_preview);
circleImageView.setBackgroundColor(color);
}
/**
* 刷新颜色显示
*/
public void updateColor() {
circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor());
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~