Android中PreferenceFragment的使用详解

网友投稿 1018 2022-12-10

Android中PreferenceFragment的使用详解

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小时内删除侵权内容。

上一篇:SpringBatch跳过异常和限制方式
下一篇:Spring Batch 如何自定义ItemReader
相关文章

 发表评论

暂时没有评论,来抢沙发吧~