现在的app基本都会有一些设置界面,有些数据需要保存到服务器,而有些数据只需保存到本地,对于保存到本地的操作,相信大家一般都会使用SharedPreference实现,然后自己动手写一个设置页面,大概花了半天时间弄完了,感觉自己萌萌哒。殊不知,还有一种更为简单的方法,就是PreferenceFragment,连界面布局都不用自己写,就能实现类似于android设置界面那样的效果,关键是,省时间,我刚刚大概测试了一下,从创工程到实现效果用了不到20分钟!!!而且最大的好处是,完全符合谷歌官方推出的Material Design,整体性上非常的统一和谐。先来看看效果。
一、创建一个xml资源文件,如setting.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="分类一"> <SwitchPreference android:icon="@drawable/ic_settings_24dp" android:key="wifi" android:summaryOff="禁用" android:summaryOn="启用" android:title="WIFI" /> <CheckBoxPreference android:icon="@drawable/ic_settings_24dp" android:key="wifi2" android:summaryOff="禁用" android:summaryOn="启用" android:title="WIFI2" /> </PreferenceCategory> <PreferenceCategory android:title="分类二"> <ListPreference android:title="数据更新频率" android:key="update_rate" android:entries="@array/update_rate" android:entryValues="@array/update_rate_value" android:summary="默认" /> <MultiSelectListPreference android:title="数据更新频率(多选)" android:key="update_rate_muti" android:entries="@array/update_rate" android:entryValues="@array/update_rate_value" android:summary="默认"/> </PreferenceCategory> <PreferenceCategory android:title="分类三"> <EditTextPreference android:dependency="wifi" android:key="wifi_name" android:summary="默认值" android:title="WIFI Name" /> <!-- 做简单显示,可以不指定key --> <Preference android:title="关于" android:summary="XXX 工作室" /> <Preference android:title="版本号" android:summary="1.0" android:enabled="false" android:selectable="false"/> </PreferenceCategory> <PreferenceCategory android:title="分类四"> <PreferenceScreen android:summary="单位、数据源、其他设置......" android:title="更多设置"> <SwitchPreference android:title="其他设置" android:summary="" /> <CheckBoxPreference android:title="选项" android:summary="" /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen>
注意:分类二中的entries需要在strings.xml中定义数组
如下:
<string-array name="update_rate"> <item>一小时</item> <item>三小时</item> <item>六小时</item> <item>半天</item> <item>一天</item> </string-array> <string-array name="update_rate_value"> <item>1</item> <item>3</item> <item>6</item> <item>12</item> <item>24</item> </string-array>
二、创建设置的活动,注意不要使用是支持包的碎片
package cn.bill56.preferencesetting; import android.preference.PreferenceFragment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 不要设置setcontentview if (savedInstanceState == null) { SettingFragment settingFragment = new SettingFragment(); getFragmentManager().beginTransaction() .add(android.R.id.content,settingFragment) .commit(); } } public static class SettingFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 加载xml资源文件 addPreferencesFromResource(R.xml.setting); } } }
三、运行程序,便可看到效果图所示的效果
选择一些设置后,我们可以查看应用程序内部,看看是否真的保存了数据
打开DBMS,可以看到在程序内部有一个shared_prefs文件夹,展开可以看到保存的选项存储的文件,导入电脑后,打开文件,可看到如下内容(根据自己的操作不同保存的内容肯定不一致):
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="wifi_name">111</string> <boolean name="wifi2" value="true" /> <set name="update_rate_muti"> <string>1</string> <string>6</string> <string>3</string> </set> <boolean name="wifi" value="true" /> </map>
这么简单的几行代码就能实现这么负责的功能,看来外面的世界不小,一定要多去看看啊。
相关推荐
PreferenceFragment偏好设置的Demo,它会自动保存用户数据,上次修改后下一次自动生效,不需要重新配置。用它来做app的设置界面或者保存...在Android3.0或更高的版本上,可以使用PreferenceFragment类去实现这个功能。
使用ViewPage实现APP界面伐屏切换代码示例源码,Android studio源码,eclipse打开无效
uni-app快速入门源码 uni-app开发经典源码项目 uni-app可快速实现对接企业进销存、OA、ERP系统 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、...
介绍做的一个天气预报demo,界面美观,实现了自动获取当前位置天气信息、根据天气更换背景图、更换城市、热门城市列表、记住设置的地址等功能。软件架构使用了android开发。城市管理界面:在这里可以对添加的城市...
旅行APP的界面设计与实现.pdf
GuidePage 快速实现APP欢迎页,一行代码搞定
在账号和密码提示框中输入相关信息,当输入的账号和密码正确时,点击登录按钮后,登录界面会跳转到工作界面,如果输入的账号和密码错误,则会提示账号和密码错误的信息...跳转界面可以通过修改程序中的Run函数来实现。
Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。...
通过使用matlab的appdesigner实现鼠标交互,可以通过点击鼠标来移动点的位置,从而改变直线与曲线的形状,进而生成不同的颜色,可以实现将一幅灰度图转变为假彩色的图,曲线使用的是Bezier曲线,这样可以方便地通过...
内容概要:基于App Inventor实现的Android app开发,app包括登录模块、注册模块、帮助模块、主界面、指南针、人脸识别、一言金句等模块功能;其中调用3个 API 接口,分别在注册模块与登录模块中实现微数据库API,在...
ios app引导界面实现 源代码 代码可以运行 代码组织结构清楚
APP下载页面HTML模板,大家可以参考,直接修改图片即可。
该demo是综合主流app,快速纯代码搭建界面
本文只要介绍HBuilder实现App资源在线升级更新。 梳理思路: 1.获取线上App版本号和当前App版本号 2.比对版本号,判断是否资源在线升级更新 3.是否下载最新安装包[可以静默下载或用户触发] 4.是否执行资源在线升级...
APP生成及控制端的安装使用都包含每一步的操作详细教程,菜鸟按照视频步骤一步步的就可实现APP生成及控制端后台的所有搭建 演示 APP: 链接:https://pan.baidu.com/s/1FBL7ibYwe3ayGvhekniHcw?pwd=ynl8 控制端...
常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store中的)。所以咱们来模拟一下用户的操作步骤: 1、...
基于Android的新能源汽车充电服务APP的设计与实现app系统源码(Android本科毕业设计+期末大作业高分必看)。基于Android的新能源汽车充电服务APP的设计与实现app系统源码(本科毕业设计+期末大作业高分必看)。基于...
基于Android的智能家居APP的设计与实现 基于Android的智能家居APP的设计与实现 基于Android的智能家居APP的设计与实现 基于Android的智能家居APP的设计与实现 基于Android的智能家居APP的设计与实现 基于...
vue项目+hbuilder打包实现app自动检测更新并下载vue项目+hbuilder打包实现app自动检测更新并下载
提供了四种实现App主界面tab的实现方法。