大部分的引导界面基本上都是千篇一律的,只要熟练掌握了一个,基本上也就没什么好说的了,要想实现应用程序只启动一次引导界面这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单,下面来详细介绍一下这个类的使用方法

1.SharedPreferences的详细介绍和用法

其实在 20.游戏开发基础(游戏数据存储)中已经有过介绍了,为了文章的完整还是再介绍一遍。

做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息。SharedPreferences正是Android中用于实现这中存储方式的技术。

SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

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

具体代码的书写流程为:

A、存放数据信息
<1> 打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

SharedPreferences settings = getSharedPreferences(“setting”, 0);        

<2> 让setting处于编辑状态

SharedPreferences.Editor editor = settings.edit();

<3> 存放数据

editor.putString(“name”,”cnblogs”);
editor.putString(“URL”,”www.cnblogs.com”);

<4> 完成提交

editor.commit();

B、读取数据信息
<1> 获取Preferences

 SharedPreferences settings = getSharedPreferences(“setting”, 0);

<2> 取出数据

String name = settings.getString(“name”,”默认值”);
String url = setting.getString(“URL”,”default”);

以上就是SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:
DDMS->File Explorer /data/data/<package name>/shared_prefs/setting.xml

2.实现的效果图(图片分别为欢迎界面、引导界、软件主页)
第一次启动程序:欢迎界面-->引导界面-->软件主页
以后启动程序:欢迎界面-->软件主页

3.具体的实现编码

(1)欢迎页面Java代码,就是简单的建个线程,延迟指定时间,然后跳转就可以了

package com.yanis.ui;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle; public class WelcomeActivity extends Activity implements Runnable {
public static final int VERSION = 1;
public static SharedPreferences sp; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
// 启动一个延迟线程
new Thread(this).start();
} @Override
public void run() {
try {
// 延迟两秒时间
Thread.sleep(2000);
// 读取SharedPreferences中需要的数据
sp = getSharedPreferences("Y_Setting", Context.MODE_PRIVATE);
/**
* 如果用户不是第一次使用则直接调转到显示界面,否则调转到引导界面
*/
if (sp.getInt("VERSION", 0) != VERSION) {
startActivity(new Intent(WelcomeActivity.this,
GuideActivity.class));
} else {
startActivity(new Intent(WelcomeActivity.this,
MainActivity.class));
}
finish(); } catch (Exception e) {
}
}
}

WelcomeActivity

(2)引导页面,用的ViewPager实现的,可以参考下ViewPager介绍和简单实现,具体可以在源代码中查看

(3)主页,这就没什么好说的了,就一个显示布局的页面。

源代码地址:https://github.com/YeXiaoChao/Yc_ui_guideview_once

来源:http://blog.csdn.net/yangyu20121224/article/details/8987342

【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面的更多相关文章

  1. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  2. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  3. 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面

    本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个循序渐进的学习效果,这样更能加深大家对于程序为什么要这样写的用意,理论加上实际的应用才能达到事半功倍的效果,不是吗? 最下方有源码的下载 ...

  4. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解

    做Android开发加起来差不多也有一年多的时间了,总是想写点自己在开发中的心得体会与大家一起交流分享.共同进步,刚开始写也不知该如何下手,仔细想了一下,既然是刚开始写,那就从一个软件给人最直观的感受 ...

  5. 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果

    基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧 ...

  6. 【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义·详解

    一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和men ...

  7. 【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义·详解

    一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和men ...

  8. 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法

    原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃 ...

  9. 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单

    前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来 ...

随机推荐

  1. git 删除错误提交的commit

    方法: 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:    git reset --mixed:此为默认方式,不带任何参数的git reset ...

  2. sessionId在fragment里无法保存的问题

    fragment页面需要验证用户是否登录.若没登陆调用登录页面,后返回fragment. 这个问题解决 sessionId = SharePreferenceUtils.getSessionId(); ...

  3. 【读书笔记】iOS-读取文本文件

    一,文本文件的内容. 二,工程目录 三,ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional ...

  4. 【读书笔记】iOS-Tagged Pointer对象-注意事项

    一,2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念. 对于64 ...

  5. Swift学习--常量.变量.数据类型的使用(二)

    一.Swift中的数组 //Swift中的数组 //NSArray *arr = @["",""]; //和OC数组的区别就是去掉前面的@ let arr11 ...

  6. Swift之map函数的强大之处

    CollectionType Map 在CollectionType的extension中map方法的定义: extension CollectionType { /// Return an `Arr ...

  7. nodejs socket

    server.js var net = require('net'); var clientList = []; var HOST = '127.0.0.1'; var PORT = 6969; va ...

  8. OC语言-04-OC语言-核心语法

    一.点语法 1> 基本使用 点语法本质上是set方法/get方法的调用 2> 使用注意 若出现在赋值操作符的右边,在执行时会转换成get方法 若出现在赋值操作符的左边,在执行时会转换成se ...

  9. DP大作战——多重背包

    题目描述 在之前的上机中,零崎已经出过了01背包和完全背包,也介绍了使用-1初始化容量限定背包必须装满这种小技巧,接下来的背包问题相对有些难度,可以说是01背包和完全背包的进阶问题. 多重背包:物品可 ...

  10. linux+jre+apache+mysql+tomcat调优

    一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌 ...