《OpenGL ES 3.x游戏开发(上卷)》一2.2 简单数据的存储——Preferences

简介:

本节书摘来异步社区《OpenGL ES 3.x游戏开发(上卷)》一书中的第2章,第2.2节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 简单数据的存储——Preferences

进行游戏开发时,有时需要持久地存储一些十分简单的数据,例如,游戏中音效的开关状态、振动效果的开关状态等。Android设计者也充分注意到了这种存储简单数据的需求,提供了一个Preferences类专门用于完成此类任务。

2.2.1 Preferences简介

Preferences使用非常方便,但功能不是很强大,一般适合用来保存一些用户设置的参数,是一种轻量级的数据存储机制。Preferences仅可以用来存储几种简单类型的数据,如boolean、int、float、long或者String。这些数据以键值对的形式存储在应用程序私有的Preferences目录(/data/data/应用程序包名/shared_prefs/)下的特定xml文件中,如图2-7所示。


7

提示

请读者注意,这个xml文件是设计为由程序自动维护的,不应该手动进行修改,以免影响程序的正确运行。

2.2.2 Preferences实现访问时间的记录

本小节将介绍一个使用Preferences实现的,具有记录上次访问时间功能的小案例。其具体功能为:第一次运行本案例中的程序,程序将显示“用户您好,欢迎您第一次光临本软件。”,若不是第一次运行,则显示上一次用户运行的时间,如“用户您好,您上次进入时间为:Oct 15,2011 2:38:40 AM”。程序运行的效果如图2-8和图2-9所示。


8_9

介绍完本案例的运行效果之后,接下来将对本案例的开发进行介绍。主要是本案例的主控制类Sample2_3_Activity的开发,其代码如下。

1    package com.bn.pp3;
2    ……//此处省略了部分类的引入代码,读者可自行查看随书的源代码
3    public class Sample2_3_Activity extends Activity {
4       @Override
5        public void onCreate(Bundle savedInstanceState) {    //重写onCreate方法
6            super.onCreate(savedInstanceState);
7            setContentView(R.layout.main);                //跳转主界面
8            //获取SharedPreferences引用,存储名称为bn.xml,读写模式为私有
9            SharedPreferences sp=this.getSharedPreferences("bn", Context.MODE_PRIVATE);
10            String lastLoginTime=sp.getString("time", null);    //获取键为“time”的值
11            if(lastLoginTime==null){                 //若值为空,则为第一次登录本程序
12                 lastLoginTime="用户您好,欢迎您第一次光临本软件。";
13            }else{                                  //不为空,则修改字符串为上次登录时间
14                lastLoginTime="用户您好,您上次进入时间为:"+lastLoginTime;
15            }
16            SharedPreferences.Editor editor=sp.edit();//取得编辑对象,来修改Preferences文件
17            editor.putString("time", new Date().toLocaleString());  
                                             //修改键为“time”的值为当前时间
18            editor.commit();                        //提交修改
19            TextView tv=(TextView)this.findViewById(R.id.TextView01);  
              //获取用来显示的TextView
20            tv.setText(lastLoginTime);                //设置显示的字符串
21    }}
  • 第9行使用getPreferences()方法来获得Preferences对象,并将存储文件命名为bn.xml,同时规定读写模式为私有。
  • 第10-14行功能为在打开程序时,获取Preferences中存储的键为“time”的值,并判断是否为空来确定是否为第一次运行本案例,来显示不同的信息。
  • 第16-18行功能为首先获取Preferences的编辑对象,然后对Preferences文件进行修改,设置键为“time”的值为当前的时间,最后提交。
  • 第19-20行功能为设置界面中显示的字符串内容。
相关文章
|
9月前
|
异构计算
QT+OpenGL高级数据和高级GLSL
● OpenGL中的缓冲区 对象管理特定的GPU内存 ● 在将缓冲区绑定到特定的缓冲区目标时候赋予它意义 ● OpenGL在内部会保存每个目标(缓冲区)的引用,并且根据目标以不同的方式处理缓冲区。
100 0
QT+OpenGL高级数据和高级GLSL
|
23小时前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
58 0
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
345 0
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
225 0
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
185 0
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
88 0
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
84 0
|
Java API 数据安全/隐私保护
Opengl ES之矩阵变换(上)
Opengl ES连载系列
89 0
|
存储
Opengl ES之踩坑记
Opengl ES之连载系列
91 0
|
存储 编解码 算法
Opengl ES之RGB转NV21
Opengl ES连载系列
117 0