android使用ViewPager实现欢迎引导页

大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面。当第二次启动的时候,则直接进入主界面。 这种效果一般使用ViewPager实现。今天就来为大家介绍一下ViewPager的使用。

实现步骤:

使用SharedPerferences来记录是否是第一次启动APP,如果是,则转跳到Guide页面,如果不是第一次启动。就转跳到主Activity.

MainActivity:

本Activity作为Logo页面进入,使用handler来实现页面的延迟专跳。对于handler还不太了解的同学,可以来这里学习一下安卓的异步消息传递机制:http://blog.csdn.net/guolin_blog/article/details/9991569 (感谢郭神带来好文章)

private Handler mHandler = new Handler(){

        @Override
public void handleMessage(Message msg) {
switch (msg.what){
case MAIN:
Intent intent = new Intent(MainActivity.this,Main.class);
startActivity(intent);
finish();
break;
case GUIDE:
Intent intent2 = new Intent(MainActivity.this,GuideView.class);
startActivity(intent2);
finish();
break;
}
}
};

此外使用SharedPreferences来读取用户启动信息

mSharedPreferences = getSharedPreferences("conf",MODE_PRIVATE);
isFirst = mSharedPreferences.getBoolean("first",true);

之后进行简单的判断,这里不在累赘。

GuideActivity

这个界面是引导页的界面,我们首先在其布局文件下添加一个ViewPager之后在java文件中获取到这个ViewPager,并为这个ViewPager添加一个适配器。 这个适配器需要自己继承PagerAdapter来重写,稍后会进行讲解。

 mViewPager = (ViewPager) findViewById(R.id.viewpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(mList);
mViewPager.setAdapter(adapter);

注意这个Adapter的传入参数是一个泛型为View的List。我们先向List里添加我们的View,再为最后一个view的Button添加监听事件,用来转跳到主页面;

mList = new ArrayList<>();
View view = LayoutInflater.from(this).inflate(R.layout.layout1,null);
mList.add(view);
view = LayoutInflater.from(this).inflate(R.layout.layout2,null);
mList.add(view);
view = LayoutInflater.from(this).inflate(R.layout.layout3,null);
mList.add(view);
mButton = (Button) view.findViewById(R.id.button_enter);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(GuideView.this,Main.class);
startActivity(intent);
finish(); }
});

ViewPagerAdapter

这是ViewPager的适配器,继承于PagerAdapter,主要实现两个方法:

destroyItem();

instantiateItem();

顾名思义一个是view去掉时候的方法,一个是添加view的方法。

这里可以看到一个很熟悉的参数 container,没错,和baseAdapter的参数很像,都是用来缓存当前view的。接下来只需要调用他的removeView和addView即可。需要注意的是,需要向下转型为ViewPager。

 public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView(mList.get(position)); } @Override
public Object instantiateItem(ViewGroup container, int position) {
Log.i("wing","viewAdatper here");
((ViewPager)container).addView(mList.get(position));
return mList.get(position);
}

另外不要忘记重写他的构造方法。传入一个泛型为view的List


public ViewPagerAdapter(ArrayList list){
mList = list;
}

这样适配器就完成了,大家自己多写几遍就会熟练。对了,别忘了给每个view一个布局文件。

下面看看效果图:

源码下载地址

android使用ViewPager实现欢迎引导页的更多相关文章

  1. Android零基础入门第69节:ViewPager快速实现引导页

    在很多APP第一次启动时都会出现引导页,在一些APP里面还会包括一些左右滑动翻页和页面轮播切换的情况.在之前也已经学习了AdapterViewFlipper和ViewFlipper,都可以很好的实现, ...

  2. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码

    Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...

  3. Android如何添加多张引导页

    摘要:项目需要添加多张引导页,所以在网上搜集了一些资料并整理好. Step1 添加一个GuideActivity. 其实这个引导页无非就是一个Activity,里面有一个ViewPager而已.多张图 ...

  4. ViewPager制作APP引导页+若干动画效果

    ViewPager使用FragmentStatePagerAdapter做Adapter,引导页使用多Fragment形式. 见http://www.cnblogs.com/bmbh/p/567276 ...

  5. Android ViewPager欢迎页+引导页+进入首页

    import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences ...

  6. Android特效专辑(二)——ViewPager渲染背景颜色渐变(引导页)

    Android特效专辑(二)--ViewPager渲染背景颜色渐变(引导页) 首页:http://blog.csdn.net/qq_26787115/article/details/50439020 ...

  7. 安卓第一次启动引导页使用ViewPager实现

    我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等.一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单 ...

  8. ViewPager之引导页

    一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 本文介绍ViewPager最基础的应用:在多个View之间进行切换,亦即ViewP ...

  9. Android 引导页公共方法LeaderPager

    SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 引导页是我们开发app很常用的功 ...

随机推荐

  1. 计算机网络之动态主机配置协议DHCP

    为了将软件协议做成通用的和便于移植,协议软件的编写者不会把所有细节都固定在源代码中,而是把协议软件参数化,这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能. 一台计算机和另一台计算机的区 ...

  2. 1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)

    1.win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现) 一.准备知识:win10下打开Administrator的方式 在win10操作系统中,Administrator ...

  3. Appium移动自动化测试(三)--安装Android模拟器(建议直接连手机,跳过此步)

    转自虫师,亲测有效,留备后用. 本文中如果直接安装时不出现错误,则可以忽略(一.二.三.四.五),我安装的是5.1.1,直接成功,就是有点慢,要有耐心. 如果到最后一步,启动不起来,报错: emula ...

  4. CoreText精彩文字轮廓绘制动画的一点改进

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原文在: http://oleb.net/blog/2010/ ...

  5. android解析网络json数据(1)

    1.首先获得url,传入URL类,利用URL的openconnection方法,获得URLConnection,去的输入流,进行操作,具体代码如下: public class NetConnectio ...

  6. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)

    SQLite 运算符 SQLite 运算符是什么? 运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算. 运算符用于指定 SQLite 语句中的条件 ...

  7. 分布式内存文件系统Tachyon

    UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于 ...

  8. maven跳过单元测试的两个参数区别

    maven在打包过程中需要执行单元测试.但有些时候单元测试已经通过只是想打包时,想跳过测试.maven提供了两个参数跳过测试:maven.test.skip=true 和skipTests. 例子 m ...

  9. javascript之内置函数

    1.常规函数 (1)alert函数:显示一个警告对话框,包括一个OK按钮. (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮. (3)escape函数:将字符转换成Unicod ...

  10. iOS9中关于地址簿ABAddressBookXXX之类方法被废弃的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在iOS9的SDK中我们会发现原来地址簿权限查询,获取以及创建 ...