android开发-数据存储Ⅰ

本章讲述在Android开发中,简单的数据存储。涉及知识主要是SharedPreferences,及多页面切换ViewPager。

1.功能需求

做一个小应用、启动的时候有左右引导图、只有第一次启动时显示,看完以后,下一次启动就不会再显示了。

  • 做两个Activity展示引导,引导后进入主界面
  • 点击跳转下一页,主界面内容不限
  • 第二次启动时不再显示引导界面,直接跳转应用主界面

2.软件实现

图1

图2

图3

简要说明:运行软件,进入图1界面,若第一次使用,软件在运行2秒后,自动跳转到引导界面。通过滑动屏幕,可跳转到不同的引导界面。点击进入主页时,记录引导界面是否被显示的状态值,若不清空值时,下一次不会在出现引导界面。

3.相关知识

(1)sharedPreferences

sharedPreferences是数据持久化,就是把简单类型的数据(如:String,int)存储起来。对应复杂类型数据,一般是将数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

SharedPreferences使用方法:

  • 使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定;
  • 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象;
  • 通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法;
  • 通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

本例中存储是否显示引导页面的案例代码如下:

public class SessionData {
    public static final int VERSION = 1;        //1 不启动缓存
    public static SharedPreferences sp_version;   //保存
}

// 存入数据并提交
SessionData.sp_version.edit() .putInt("VERSION", SessionData.VERSION).commit();

// 读取SharedPreferences中需要的数据
SessionData. sp_version = getSharedPreferences("Y_Setting", Context.MODE_PRIVATE);

int version=SessionData.sp_version.getInt("VERSION", 0);

(2)ViewPager

android-support-v4.jar 是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用 的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与ListView类似,我 们也需要一个适配器,他就是PagerAdapter。ViewPager类提供了多界面切换的新效果,新效果有如下特征:

  • 当前显示一组界面中的其中一个界面;
  • 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分;
  • 滑动结束后,界面自动跳转到当前选择的界面中。

ViewPager在本例中使用的代码如下:

 1 package www.csnt.com.geekbandfivehomework;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.support.v4.view.ViewPager;
 7 import android.support.v4.view.ViewPager.OnPageChangeListener;
 8 import android.view.LayoutInflater;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12
13 import java.util.ArrayList;
14
15 public class GuideActivity extends Activity implements OnPageChangeListener {
16     // 定义ViewPager对象
17     private ViewPager viewPager;
18     // 定义一个ArrayList来存放View
19     private ArrayList<View> views;
20     // 定义各个界面View对象
21     private View view1, view2, view3, view4;
22     // 定义开始按钮对象
23     private Button btnStart;
24
25     @Override
26     protected void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         setContentView(R.layout.activity_guide);
29         initView();
30
31     }
32
33     /**
34      * 初始化
35      */
36     private void initView() {
37         // 实例化ViewPager
38         viewPager = (ViewPager) findViewById(R.id.viewpager);
39
40         // 实例化各个界面的布局对象
41         LayoutInflater mLi = LayoutInflater.from(this);
42         view1 = mLi.inflate(R.layout.guide_view1, null);
43         view2 = mLi.inflate(R.layout.guide_view2, null);
44         view3 = mLi.inflate(R.layout.guide_view3, null);
45
46
47         // 实例化ArrayList对象
48         views = new ArrayList<View>();
49         // 将要分页显示的View装入数组中
50         views.add(view1);
51         views.add(view2);
52         views.add(view3);
53
54         // 设置监听
55         viewPager.setOnPageChangeListener(this);
56         // 设置适配器数据
57         viewPager.setAdapter(new ViewPagerAdapter(views));
58
59         // 实例化开始按钮
60         btnStart = (Button) view3.findViewById(R.id.startBtn);
61         // 给开始按钮设置监听
62         btnStart.setOnClickListener(new OnClickListener() {
63             @Override
64             public void onClick(View v) {
65                 // 存入数据并提交
66                 SessionData.sp_version.edit()
67                         .putInt("VERSION", SessionData.VERSION).commit();
68                 startActivity(new Intent(GuideActivity.this, MainActivity.class));
69                 finish();
70             }
71
72         });
73     }
74
75     /**
76      * 滑动状态改变时调用
77      */
78     @Override
79     public void onPageScrollStateChanged(int arg0) {
80
81     }
82
83     /**
84      * 当前页面滑动时调用
85      */
86     @Override
87     public void onPageScrolled(int arg0, float arg1, int arg2) {
88
89     }
90
91     /**
92      * 新的页面被选中时调用
93      */
94     @Override
95     public void onPageSelected(int arg0) {
96     }
97
98 }

ViewPager

其中:view3 = mLi.inflate(R.layout.guide_view3, null);表示其中一个界面加载到项目中。对于该界面中的其他控件,可通过如下方式使用:

// 实例化开始按钮
        btnStart = (Button) view3.findViewById(R.id.startBtn);
        // 给开始按钮设置监听
        btnStart.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // 存入数据并提交
                SessionData.sp_version.edit()
                        .putInt("VERSION", SessionData.VERSION).commit();
                startActivity(new Intent(GuideActivity.this, MainActivity.class));
                finish();
            }
        });

4.项目源代码下载

本项目源代码在360云盘上,开发环境为 Android Studio 2.0 beta 7。

https://yunpan.cn/cYamkZG3sq9jf  访问密码 f3d5。文件名称:android引导界面demo。

时间: 2024-10-07 05:38:27

android开发-数据存储Ⅰ的相关文章

关于Android开发数据存储的方式(一)

关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方式有三种:一个是文件,一个是数据库,还有一个则是网络. 当中文件和数据库可能用的稍多一些.文件用起来较为方便.程序能够自定义格式:数据库用起稍烦锁一些,但它有它的长处.比方在海量数据时性能优越.有查询功能,能够加密,能够加锁.能够跨应用.跨平台等等.网络,则用于比較重要的事情,比方科研,勘探,航空等

关于Android开发数据存储的四大方式

关于Android开发数据存储的四大方式 在厦门做Android开发也有两个月了,快情人节了,我还在弄代码.在微信平台上开发自己的APP,用到了数据存储的知识,现在总结一下: 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时

android 开发-数据存储之文件存储

android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时候缓存文件或内部文件将会被清除. 以下是开发学习中所写的示例代码,以供日后查阅: xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="

Android开发数据存储之ContentProvider详解

转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查.关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_W

处女男学Android(十四)---Android 重量级数据存储之SQLite

前言 不知不觉的Android基础系列已经写了十三篇了,这是第十四篇~上一篇blog记录了Android中的一种数据存储方案,即共享参数(Sharedpreferences)的使用(处女男学Android(十三)---Android 轻量级数据存储之SharedPreferences).最近初学如何在Android中应用SQLite,写了一个基于ListView的增删查的小例子,本篇blog就记录一下我学习到的如何在Android中操作SQLite持久化客户端数据. 初始化SQLite 关于SQ

Android中数据存储(一)

国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM读写文件,可以使用java中IO流来读写,但是谷歌很人性化,直接给你封装了一下,所以就有了Context提供的这两个方法:FileInputStream openFileInput(String name); FileOutputStream openFileOutput(String name,

Android之数据存储

概述 1.android中包含5中数据存储方式: SharedPreferences存储数据. ContentProvider存储 文件存储 SQLlite数据库存储 网络存储 Preference  File   DataBase 这三种方式分别对应的目录是: /data/data/Package Name/Shared_Pref /data/data/Package Name/files /data/data/Package Name/database 简单数据和配置信息,SharedPre

IOS开发数据存储篇—IOS中的几种数据存储方式

IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都保存在APP所在的沙盒之中.一般有以下几种: 1.PList(XML属性列表) 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦 //写入文件 NSString *doc = [NSSearchPathForDirectoriesInDomains(

android开发之存储数据

android数据存储之SharedPreferences 一:SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中:当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出.SharedPreferences 可以用来进