前言:

最近忙着搞项目,难得有时间,便来整理搞项目中学习到的知识

使用之前,先介绍一下android这种的五种数据储存方式,分别为文件储存,SharePrefence,SQL,使用ContentProvider存储数据,网络存储数据,其中,SharePrefence是一个轻量的储存,主要是用来储存app的相关设置,设置界面就是使用的这种储存方式

想要深入了解的请看下面的参考博文

Android 数据存储五种方式使用与总结 - CSDN博客

使用:

按照以往,我们创建界面的时候,是用的xml布局+activity文件,设置界面也是与之类似

第一步:创建xml文件夹

切换到Project模式,新建一个xml文件夹,用来放设置界面的布局文件

第二步:编写布局文件

在xml文件夹中新建一个xml文件

命名的话以pref_xxx形式,官方的命名规范就是以pref为前缀命名的

打开xml文件,可以发现与我们之前写布局文件是一样的,有design模式和text模式,这里我们可以看到有七种可以选择,我只讲解EditTextPreference和SwitichPreference

需要详解的可以参考这一篇Android:详解如何创建Google风格的SettingsActivity - 简书

结合上面的两张图片,我讲解一下相关的属性

defaultValue是默认值,

key类似于我们写layout文件中定义的id,我们可以通过id找到控件,同样的,在这里,我们也可以通过key可以找到控件

summary就是开通会员下面的那一行字

title就是标题,也就是开通会员

EditViewPreference 这个是封装了EditView的一个控件,当我们点击的时候,会弹出一个对话框让我们输入数据,当我们输入数据之后,数据就会保存在SharePreference之中

同理,switch是一个开关,点击的时候会将true或者false保存在SharePreference中

如果我们只是想弄一个选项,点击会打开一个浏览器,上面的控件均不合适,我们怎么办呢?不知道你注意到没有,最外层使用的是PreferenceScreen

我们可以像上图之中这样使用PreferenceScreen,之后在java代码之中可以为它设置监听器,跳转到浏览器

key可以定义在sting.xml中,当然,也可以直接设置

第三步:创建Fragment

对于Android 3.0以下的应用,我们需要在 Activity 中显示设置,应当扩展 PreferenceActivity 类。这是传统 Activity 类的扩展,该类根据 Preference 对象的层次结构显示设置列表。当用户进行更改时,PreferenceActivity 会自动保留与每个 Preference 相关的设置。对 Android 3.0 及 更高版本系统的应用,则应改为使用 PreferenceFragment。与仅使用上述 Activity 相比,无论在构建何种 Activity,Fragment都可为应用提供一个更加灵活的体系结构。

现在来说,最低版本都是android4.0了,我们就直接抛弃以前的方法,使用Fragment即可

新建一个Fragment

由于我们这个是设置界面,所以不需要想正常的fragment那样使用,所以将三个选项都取消

首先我们要修改fragment,使其继承PreferenceFragment

之后,在onCreate方法中添加一行代码,使用addPreferenceFromResource方法绑定之前的设置界面的xml

如果之前有使用过fragment的,应该知道我们只能在onViewCreated方法中来找控件

这里通过key来找到设置界面的控件

调用静态方法getDefaultSharedPreference来获得sharePreference,之后通过get方法来获取之前保存的数值

这里需要提及一下,原本的SharedPreference中可以保存int boolean String等类型的数据,但是,如果像我们这里使用设置来保存app设置的相关数据,sharedPreference只有两种数据,一种是String,另外一种则是boolean,如果想要int,需要将获得的String转换为int类型

找到控件之后,我们可以调用相关的方法为其设置监听器来实现相关的功能

第四步:动态添加在framelayout中

我们需要新建一个activity文件,其布局需要一个framelayout

之后,我们通过Fragment的方法动态添加设置fragment

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.setting_framlayout,settingFragment).commit();

学过fragment的话,应该知道,我们使用Fragment的时候,有两个包给我们选择,一个是v4包,另外一个则是app包,使用v4包的那个fragment可以获得更好的兼容性(低版本)

所以这里需要注意,使用的fragment是app包的Fragment,刚开始我使用的v4包,一直出错,查找原因之后,发现了,之前settingFragment继承的是PreferenceFragment,而PreferenceFragment继承的则是app包下的Fragment

补充:

通过setEnable方法(对象为控件)可以禁用控件(如果设置密码锁的话可以使用此方法)

可以将Preference转型为相关的对象,如Preference可以转为EditTextPreference,或者可以转为SwitchPreference,之后就可以调用相关的对象的方法(与原来的在xml定义的控件相同的使用方法)

Android开发——设置界面的创建的更多相关文章

  1. 图解android开发在界面上显示图片

    图解android开发在界面上显示图片<申明:转自百度> <原文章地址:http://jingyan.baidu.com/article/49711c6153a277fa441b7c ...

  2. Android开发探秘之一:创建可以点击的Button

    感觉到自己有必要学习下手机开发方面的知识,不论是为了以后的工作需求还是目前的公司项目. 当然,任何新东西的开始,必然伴随着第一个HelloWorld,Android学习也不例外.既然才开始,我就不做过 ...

  3. Android 打开设置界面或者WiFi连接界面

    1.使用APP打开系统的设置界面或者WiFi连接界面 startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网 ...

  4. Android开发:界面设计之六大layouts介绍

    1.帧布局 FrameLayout: FrameLayout是最简单的布局对象.在它里面的的所有显示对象都将固定在屏幕的左上角,不能指定位置,后一个会直接覆盖在前一个之上显示 因为上面的一段话这个是在 ...

  5. Android开发的初学者快速创建一个项目

    因为gwf的原因,大陆连不上google所以AndroidSDK是无法更新的 而且设置代理也不一定能解决问题 如果是初学者想快速的了解安卓开发,可以在国内的内网下载整合包 下载地址:http://rj ...

  6. android开发设置dialog的高宽

    这里设置为跟屏幕一样的宽度,:看代码 dlg.show(); WindowManager.LayoutParams params = dlg.getWindow().getAttributes(); ...

  7. Android开发之使用AlertDialog创建对话框,单选框和多选框

    对话框: 对话框的icon,title,message等都可以不设置. 单选框和多选框与对话框勾选步骤基本上一致. 对话框的构建步骤: 1.使用AlertDialog类的内部类Builder类new ...

  8. Android的设置界面及Preference使用

    一般来说,我们的APP都会有自己的设置页面,那么其实我们有非常简单的制作方法.老样子,先看效果图. 然后就是看源代码了. 第一步,先在res文件夹中新建一个xml文件夹,用来存放preferences ...

  9. react-native 跳转到ios/android 权限设置界面

    目录 ios android 1.在android/app/src/main/java/com/<projectname>文件夹下创建opensettings文件夹 2.在opensett ...

随机推荐

  1. 01_JavaSE之OOP--面向对象(类和面向对象的简单认识)

    面向对象(一) 一.面向对象概述 谈到面向对象就不得不谈谈面向过程,面向对象也是由面向过程发展而来. 面向过程思想概述 面向过程,简而言之就是分步骤,过程化的去解决问题,代表语言有:Pascal,C等 ...

  2. Sping Boot入门到实战之入门篇(三):Spring Boot属性配置

    该篇为Sping Boot入门到实战系列入门篇的第三篇.介绍Spring Boot的属性配置.   传统的Spring Web应用自定义属性一般是通过添加一个demo.properties配置文件(文 ...

  3. 初学Python(第一课)

    今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ...

  4. 利用alias在Linux下设置命令别名

    alias          //自定义命令="Linux命令"   alias          //查看当前系统里所有的自定义命令 unalias         //自定义命 ...

  5. 如何使用 libqr 库生成二维码?

    使用 libqr 库只需 4 步即可生成二维码 1.初始化 QRCode 结构体 QRCode *qrInit(int version, int mode, int eclevel, int mask ...

  6. AGC010 - D: Decrementing

    原题链接 题意简述 给出一个个数的序列,足够聪明的AB两人轮流进行以下操作: 令一个大于1的数减1,然后所有数除以. 如果一个人不能操作了,那么他就输了. 输入保证所有数都是正整数并且. 分析 这是一 ...

  7. 使用SpringSecurity保护你的Eureka.

    因为注册中心基本上都是自己的应用在使用,应用不是特别多,可以写死,如果应用很多,那么就写入数据库把 pom <dependency> <groupId>org.springfr ...

  8. python技巧

    python小技巧: 1.强烈建议使用Python的r前缀,就不用考虑转义的问题了. 2.正则表达式的使用: test = '用户输入的字符串' if re.match(r'正则表达式', test) ...

  9. Console 口配置 Telnet 登录方式典型配置指导

    1.进入系统视图,启动 Telnet 服务 system-view [Sysname] telnet server enable 2.配置从 VTY 用户界面登录后可以访问的命令级别为 2 级 [Sy ...

  10. eclipse导入/编译hadoop源代码

    1. 确保安装好JDK和eclipse 详细教程见: http://blog.csdn.net/kangdakangdaa/article/details/11364985 2. 安装 Subclip ...