APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法。

1.判断是否第一次进入应用的方法:

package com.yayun.guide;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;/*** 功能:使用ViewPager实现初次进入应用时的引导页* * (1)判断是否是首次加载应用--采取读取SharedPreferences的方法* (2)是,则进入引导activity;否,则进入MainActivity* (3)5s后执行(2)操作* * @author yayun**/
public class SplashActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_splash);boolean mFirst = isFirstEnter(SplashActivity.this,SplashActivity.this.getClass().getName());Toast.makeText(this, mFirst+, Toast.LENGTH_SHORT).show();if(mFirst)mHandler.sendEmptyMessageDelayed(SWITCH_GUIDACTIVITY,100);elsemHandler.sendEmptyMessageDelayed(SWITCH_MAINACTIVITY,100);SharedPreferences sharedPreferences= this.getSharedPreferences(my_pref, MODE_PRIVATE);sharedPreferences.edit().putString(guide_activity, false).commit();}   //****************************************************************// 判断应用是否初次加载,读取SharedPreferences中的guide_activity字段//****************************************************************private static final String SHAREDPREFERENCES_NAME = my_pref;private static final String KEY_GUIDE_ACTIVITY = guide_activity;private boolean isFirstEnter(Context context,String className){if(context==null || className==null||.equalsIgnoreCase(className))return false;String mResultStr = context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE).getString(KEY_GUIDE_ACTIVITY, );//取得所有类名 如 com.my.MainActivityif(mResultStr.equalsIgnoreCase(false))return false;elsereturn true;}//*************************************************// Handler:跳转至不同页面//*************************************************private final static int SWITCH_MAINACTIVITY = 1000;private final static int SWITCH_GUIDACTIVITY = 1001;public Handler mHandler = new Handler(){public void handleMessage(Message msg) {switch(msg.what){case SWITCH_MAINACTIVITY:Intent mIntent = new Intent();mIntent.setClass(SplashActivity.this, Welcome.class);SplashActivity.this.startActivity(mIntent);SplashActivity.this.finish();break;case SWITCH_GUIDACTIVITY:mIntent = new Intent();mIntent.setClass(SplashActivity.this, GuideActivity.class);SplashActivity.this.startActivity(mIntent);SplashActivity.this.finish();break;}super.handleMessage(msg);}};
}

原理很简单,进入的时候进行判断有无存值,若无存值则表示第一次进入,这时跳入应用引导页,否则,跳入主页面。

2.ViewPager实现翻页效果:

package com.yayun.guide;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;public class GuideActivity extends Activity implements OnClickListener
{private ViewPager mViewPager;private PagerAdapter mAdapter;private List<view> mViews = new ArrayList<view>();// TABprivate LinearLayout mTabWeixin;private LinearLayout mTabFrd;private LinearLayout mTabAddress;private LinearLayout mTabSetting;private Button mEnterButton;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initView();initEvents();}private void initEvents(){mViewPager.setOnPageChangeListener(new OnPageChangeListener(){@Overridepublic void onPageSelected(int arg0){}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2){}@Overridepublic void onPageScrollStateChanged(int arg0){}});}private void initView(){mViewPager = (ViewPager) findViewById(R.id.id_viewpager);LayoutInflater mInflater = LayoutInflater.from(this);View tab01 = mInflater.inflate(R.layout.tab01, null);View tab02 = mInflater.inflate(R.layout.tab02, null);View tab03 = mInflater.inflate(R.layout.tab03, null);View tab04 = mInflater.inflate(R.layout.tab04, null);mViews.add(tab01);mViews.add(tab02);mViews.add(tab03);mViews.add(tab04);mEnterButton=(Button)tab04.findViewById(R.id.imgbtn_enter);mEnterButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(GuideActivity.this,Welcome.class);startActivity(intent);}});mAdapter = new PagerAdapter(){@Overridepublic void destroyItem(ViewGroup container, int position,Object object){container.removeView(mViews.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position){View view = mViews.get(position);container.addView(view);return view;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1){return arg0 == arg1;}@Overridepublic int getCount(){return mViews.size();}};mViewPager.setAdapter(mAdapter);}@Overridepublic void onClick(View v) {}}
</view></view>

3.引导页布局文件:

<linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"></android.support.v4.view.viewpager></linearlayout>

下面运行一下代码:

我们可以发现,第一次进入页面的时候,Toast打印出true,表示应用第一次进入,这时加载引导页。

退出应用,再一次进入时,Toast打印false,表示应用已经不是不是第一次进入了。这时我们的功能基本实现了。

转载于:https://blog.51cto.com/javaqun/1735378

Android APP 引导页实现-第一次应用进入时加载相关推荐

  1. 设计影视资源网+商城的android app——引导页(第一次进入,第二次已删除)

    app展示(非UI出身,请原谅则个): 项目整个进程: 目录 项目整个进程: 一.引导页设计 1.图片加载方式 2.第一次有引导页第二次没有 二.Tab按键设计 1.RadioButton组合成Tab ...

  2. 打造APP引导页3D切换特效

    众所周知,一款好的APP,肯定有个很炫的APP引导页或者一个启动页,一个很炫的APP的引导页,肯定会为你的APP瞬间提高逼格,使得APP的用户体验瞬间倍增.那么接下来就给出一个API(setPageT ...

  3. viewpager 的工具类,内置多种指示器,能够帮你快速完成,轮播图,app 引导页,viewpager 的 tab 指示器等等

    ViewPagerHelper 项目地址:LillteZheng/ViewPagerHelper  简介:这是一个,viewpager 的工具类,内置多种指示器,能够帮你快速完成,轮播图,app 引导 ...

  4. GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)

    每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...

  5. App引导页学习进阶临摹模板|UI界面设计步骤

    设计一个成功的App引导页可以说是我们APP界面设计师需要重点用心对待的事情,因为APP引导页的设计取决于用户对这个APP的第一印象,或是大概的了解. 像素精简版 - 免费引导4 UI套件​www.s ...

  6. Android 欢迎引导页的魅力

    前言 纵观android市面上的所有APP,没有一个页面不具备欢迎引导页,可以看出引导页面的魅力有多大,引导页面能迅速抓住用户的眼球,让用户很快的了解该app的主打方向.一个好的引导页让人看了就喜欢, ...

  7. UI设计素材|APP引导页简约风格特征

    简约的APP引导页,需要对内容进行合理的把控,运用最清晰的设计元素,仅用APP产品内容本身来做设计布局,为内容留出畅快呼吸的空间,引导和协助用户的视觉动线,有序的区分引导页传递的信息与操作,用最直接的 ...

  8. 简单的php引导页面设计,PS简单制作唯美朦胧柔美的渐变APP引导页

    今天小编为大家分享PS简单制作唯美朦胧柔美的渐变APP引导页方法,教程很不错,难度不是很大,推荐到脚本之家,大家快快来学习吧! 此适合和对颜色研究不深,又急需应用的朋友.小编良心保证,再零基础的同学也 ...

  9. android打开app白色页面,完美解决Android App启动页有白屏闪过的问题

    应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...

最新文章

  1. Nagios监控系统安装及配置文档
  2. java: String的==与equals
  3. 【Lucene4.8教程之四】分析
  4. java监听窗口饮品,Java 完成部分水吧点饮品系统的:点饮品,饮品管理片段的实现...
  5. qt 背景和控件布局_Qt控件背景图片设置总结
  6. 如何用 Linq 进行多重 Orderby ?
  7. 12、oracle数据库下的存储过程和函数
  8. 渡虎谷告诉你CSS的结构和规则
  9. java servlet 开发_Java之基于Servlet的Web开发简介
  10. 第二届大数据世界论坛 聚焦行业需求
  11. bottleneck resnet网络_Detection学习之四-利用pytorch实现resnet
  12. 【PMP认证考试之个人总结】第 3 章 项目整合管理
  13. 简单奥数题 c语言基础
  14. udp 消息转发 服务器,UDP消息发送
  15. 韩语零基础快速掌握韩语学习的小技…
  16. Linux--基础知识点--4.1--vim寄存器
  17. 基于OpenGL ES 的深度学习框架编写
  18. 20系列显卡服务器,关于20系列的DLSS
  19. Python爬懂车帝的图片-代码
  20. Docker容器化技术

热门文章

  1. NYOJ题目611练练
  2. cxf返回的报文,命名空间无前缀
  3. BitNami一键安装Redmine
  4. PHP设计模式--数据访问对象模式
  5. BeanUtils自定义转换器
  6. Siebel Issue:Siebel菜单栏无法在IE7/8下展开问题解决方案
  7. MFC启动和关闭线程
  8. C#操作Access数据库
  9. PHP语法,变量,cookie小结
  10. 关于Git下载上传项目的操作指令