Android中PreferenceFragment的使用详解

  目录

  PreferenceFragment简介

  在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,Android专门为这种Activity提供了便捷的基类PreferenceActivity(如果是Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内部封装了Preference,会帮我们自动读写设置,方便开发者便捷完成这类功能。

  PreferenceFragment使用

  位于包下,现在推荐使用v7包下的,这里还是使用这个来说明,原理是一样的。

  先来使用下:

  在res目录下创建xml目录

  在xml目录下创建xml文件(文件名自己定义即可)

  这里演示的文件是

  <?xml version="1.0" encoding="utf-8"?>

  

  

  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方法中调用方法加载xml目录下的资源即可

  public class PreferenceTestFragment extends PreferenceFragment {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  addPreferencesFromResource(R.xml.pref_setting);//加载xml文件

  }

  }

  运行效果:

  中使用的控件可以查看包下,这里面有几个常用的属性:

  属性名

  用途

  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;

  }

  });

  中的key就是xml中声明的key。

  可以使用来监听SharedPreferences值改变。

  getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

  PreferenceFragment 扩展

  可以通过继承来实现自定义控件

  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中PreferenceFragment的使用详解的文章就介绍到这了,更多相关Android PreferenceFragment 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: