android使用ViewPager实现欢迎引导页
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实现欢迎引导页的更多相关文章
- Android零基础入门第69节:ViewPager快速实现引导页
在很多APP第一次启动时都会出现引导页,在一些APP里面还会包括一些左右滑动翻页和页面轮播切换的情况.在之前也已经学习了AdapterViewFlipper和ViewFlipper,都可以很好的实现, ...
- android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码
Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...
- Android如何添加多张引导页
摘要:项目需要添加多张引导页,所以在网上搜集了一些资料并整理好. Step1 添加一个GuideActivity. 其实这个引导页无非就是一个Activity,里面有一个ViewPager而已.多张图 ...
- ViewPager制作APP引导页+若干动画效果
ViewPager使用FragmentStatePagerAdapter做Adapter,引导页使用多Fragment形式. 见http://www.cnblogs.com/bmbh/p/567276 ...
- Android ViewPager欢迎页+引导页+进入首页
import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences ...
- Android特效专辑(二)——ViewPager渲染背景颜色渐变(引导页)
Android特效专辑(二)--ViewPager渲染背景颜色渐变(引导页) 首页:http://blog.csdn.net/qq_26787115/article/details/50439020 ...
- 安卓第一次启动引导页使用ViewPager实现
我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等.一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单 ...
- ViewPager之引导页
一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 本文介绍ViewPager最基础的应用:在多个View之间进行切换,亦即ViewP ...
- Android 引导页公共方法LeaderPager
SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 引导页是我们开发app很常用的功 ...
随机推荐
- GitHub Android Librarys Top 100 简介
GitHub Android Librarys Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索J ...
- 监听RecyclerView滑动到末端
监听RecyclerView滑动到末端 效果图 实现 1. 添加滑动到末端的接口 package com.kongqw.recyclerviewdemo; /** * Created by kongq ...
- android launcher 之踩到的坑
需求: 1. 用android系统launcher 隐藏主菜单 所有应用显示在桌面 即workspace上: 2.隐藏launcher上方默认的google search: 3.切换一套launche ...
- EBS开发技术之trace
trace的目的 trace主要是用于程序调优,优化,程序bug调试,程序运行系统情况跟踪 trace步骤 1.并发定义中,勾上"启用跟踪" 2.提交一个请求,得到请求编号 注意: ...
- Dynamics CRM 通过PowerShell启用AllowDeclarativeWorkflows即自定义XAML WorkFlows
CRM的工作流即workflow,不了解的人乍听之下以为是审批流,其实不是的,CRM本身是不带审批功能的,要实现审批必须要第三方的工作流引擎的配合,当然你也可以自己开发. 工作流刚开始出现的时候只有异 ...
- Android Studio 不得不知的20大快捷键
如何进入设置快捷键的界面: Android Studio -> References -> Keymap 使用的Keymaps为 Eclipse(Mac OS X)如下图所示: 1 展开和 ...
- 第一行代码阅读笔记----显示隐式Intent的基本用法
1.显示Intent意图明显,通过Intent启动另外一个活动,这是安卓中各组件进行交互的一种重要方式.一般用于启动活动,启动服务,发送广播等场景. 实现方法,这里我只说思路,实践还是要自己实操才能明 ...
- SQL Server SA 最佳实践(也许不仅仅是翻译)
老实说,本文主要部分是翻译的,并且由于英语水平的问题,我没有完全翻译,有些我觉得不重要的就跳过了,目前看来应该八九不离十,或者说不会影响最终效果,对于英语水平好的读者,可以自行查看原文.但这一年里面我 ...
- 6、Android Content Provider测试
如果你的应用中使用了Content Provider来与其他应用进行数据交互,你需要对Content Provider进行测试来确保正常工作. 创建Content Provider整合测试 在Andr ...
- 如何在SpriteBuilder中设置对象的通用属性
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中可以为对象设置自定义类从 ...