市面上好多优秀的应用(举例新浪微博、UC浏览器)都采用了欢迎页面与使用向导的方式给用户带来了良好的用户体验。

一般来说用户第一次安装应用或者安装了新版本后第一次进入应用都会显示成 欢迎页面-使用向导-主界面 的方式

用户没有安装新版本或者不是第一次进入的时候都会显示成 欢迎页面-主界面的方式

想要实现这种不同的分支,我们就要使用一种变量来存储我们是否是第一次进入应用,当然这种变量不可能是存储在应用里,而是要存储在应用包名底下的文件中

那么我们就来看看实现这种变量存储和修改的步骤吧

1、在应用的欢迎页面Splash Activity里定义一个变量isFirstIn(前一篇文章中讲了Splash),初始值无所谓,应为我们马上要从文件中读取这个值

2、定义SharedPreferences对象,并通过该对象获取文件中isFirstIn键(key)对应的值(value),这里默认为true,因为第一次进入应用时我们并没有创建该文件和该变量

3、在Splash中需要跳转的地方做一个if判断,如果是isFirstIn是true说明我们是第一次进入,那么跳转到GuideActivity1,如果是false说明我们不是第一次进入,那么跳转到主页面MainActivity

4、假如GuideActivity1是最后一个使用向导页,我们要在GuideActivity1结束之后默认跳转到MainActivity里,那么我们需要在跳转之前改变一下isFirstIn值为false,并存到文件里,这样下次进入应用时Splash可以从文件里获取值为false的isFirstIn值,这样就可以通过分支直接跳转到MainActivity了

下面关键部分的代码

Splash.Java

boolean isFirstIn = false;
//onCreate中
SharedPreferences preferences = getSharedPreferences("first_pref",
    MODE_PRIVATE);
isFirstIn = preferences.getBoolean("isFirstIn", true);
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
     if (isFirstIn) {
      // start guideactivity1
      intent = new Intent(Splash.this, GuideActivity1.class);
     } else {
      // start TVDirectActivity
      intent = new Intent(Splash.this, TVDirectActivity.class);
     }
     Splash.this.startActivity(intent);
     Splash.this.finish();
    }
   }, SPLASH_DISPLAY_LENGHT);

GuideActivity1.java 在引导页面结束前一定要修改SharedPreferences里边的值,这样第二次进入的话才会跳转到主页面,不进引导页。

SharedPreferences preferences = getSharedPreferences(
      "first_pref", MODE_PRIVATE);
    Editor editor = preferences.edit();
    editor.putBoolean("isFirstIn", false);
    editor.commit();

最后可以在应用包名底下shared_prefs文件夹下找到我们在应用里定义的first_pref.xml文件,打开可以看到里面

这种使用SharedPreferences存储变量的方法不仅可以使用与欢迎页面与使用向导,可以随意在程序任何位置使用,用来存储应用退出之后也要记录的某些关键变量或值

android应用程序第一次启动时显示引导界面的更多相关文章

  1. android实现应用程序仅仅有在第一次启动时显示引导界面

    概述 SharedPreferences的使用很easy,可以轻松的存放数据和读取数据.SharedPreferences仅仅能保存简单类型的数据,比如,String.int等.通常会将复杂类型的数据 ...

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

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

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

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

  4. Android应用第一次启动时的欢迎界面制作

    原理是这样,我们在SharedPreferences中存储一个int型数据,用来代表第几次登录,每次启动时都读取出来判断是不是第一次启动,然后依次判断是否要显示欢迎界面, 具体实现如下: 设置一个欢迎 ...

  5. IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)

    IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...

  6. Android Studio的安装及第一次启动时的配置

    Android Studio的安装及第一次启动时的配置 一.下载Android Studio 百度搜索“Android Studio" 点击中文社区进入,选择最新版本下载. 下载后双击安装包 ...

  7. Android应用程序内部启动Activity过程(startActivity)的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6703247 上文介绍了Android应用程序的 ...

  8. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

  9. vue隐藏APP启动时显示的{{}}

    vue隐藏APP启动时显示的{{}} vue组件在编译好之前会显示{{msg}},在官网上找到这个

随机推荐

  1. 手持设备点击响应速度,鼠标事件与touch事件的那些事

    前言 现在一直在做移动端的开发,这次将单页应用的网页内嵌入了app,于是老大反映了一个问题:app应用点击响应慢!我开始不以为然,于是拿着网页版的试了试,好像确实有一定延迟,于是开始了研究,最后选择了 ...

  2. Javascript设计模式学习一

    学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...

  3. 第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash

    1. UIImage imageWithContentsOfFile卡顿 [[UIImage alloc] initWithContentsOfFile 卡顿 2.uitableview scroll ...

  4. 使用pm2管理nodejs应用

    PM2 is a production process manager for Node.js applications with a built-in load balancer. It allow ...

  5. 从sum()求和引发的思考

    sum()求和是一个非常简单的函数,以前我的写法是这样,我想大部分和我一样刚开始学习JS的同学写出来的也会是这样. function sum() { var total=null; for(var i ...

  6. MySQL 优化数据库对象

    一.考虑是用 procedure analyse() 函数对当前应用的表进行分析.字段类型是否可优化. 二.通过拆分提高表的访问效率. (A) 针对MyISAM表,有两种拆分方法: 垂直拆分:主码和某 ...

  7. $.extend()和 $.fn.extend()

    1 $.extend()      jQuery.extend(): Merge the contents of two or moreobjects together into the first ...

  8. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  9. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  10. mysql数据库史上最详细起步教程(1)

    本文主要讲解mysql的操作,尽量保证步骤的详细与清晰,希望能帮到大家. 1.登录后进行数据库的创建:create database lf(数据库名);  (一定要记住分号,mysql在语句的结束符就 ...