Android学习记录:ViewPager实现欢迎页
许多APP在第一次启动的时候,都会有welcome page。近日尝试利用ViewPager来实现Welcome Page。
d0711 完成记录,跟新下载地址
========================================================================
ViewPager简述
ViewPager可以实现多个页面滑动来回切换。其可以用作软件的欢迎界面,应用内广播页,或多图预览等。Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.
android API http://www.android-doc.com/reference/android/support/v4/view/ViewPager.htmlViewPager使用方法
Step1
准备好切换用的Layout布局文件(view类)
这里需要用LayoutInflater来定位。LayoutInflater与findViewById的区别见下。LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化
findViewById()是找xml布局文件下的具体widget控件 (如Button、TextView等)Step2
创建一个View类型的list,把需要添加的view放入该list。
上面两步的示例代码见下:views=new ArrayList<View>();
LayoutInflater inflater=getLayoutInflater();
view1=inflater.inflate(R.layout.welcome1, null);
view2=inflater.inflate(R.layout.welcome2, null);
view3=inflater.inflate(R.layout.welcome3, null);
views.add(view1);views.add(view2);views.add(view3);Step3
由于我们的ViewPager需要设置一个Adapter,故我们需要新建一个自己的Adapter类来继承PagerAdapter
这个类必须重写这四个函数,对于此具体的分析可见该博客:http://blog.csdn.net/harvic880925/article/details/38487149
下面是最简单的重写:public class MyViewPagerAdapter extends PagerAdapter{
private List<View> mListViews; public MyViewPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
} /*
* Remove a page for the given position.
* The adapter is responsible for removing the view from its container
* although it only must ensure this is done by the time it returns
* 该方法实现的功能是移除一个给定位置的页面
*
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));
} /*
* Create the page for the given position.
* The adapter is responsible for adding the view to the container given here,
* although it only must ensure this is done by the time it returns fromfinishUpdate(ViewGroup).
* 该方法实现的功能是添加一个给定位置的页面到容器
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mListViews.get(position), 0);
return mListViews.get(position);
} /*
* 获取view的数量
*/
@Override
public int getCount() {
return mListViews.size();
} /*
* Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int).
* This method is required for a PagerAdapter to function properly.
*
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
}Step4
实例化ViewPager类,并将views通过MyViewPagerAdapter来设置为ViewPager的Adapter。同时设置当前页,同时可以设置页面转换的监听器viewPager=(ViewPager) findViewById(R.id.vPager);
viewPager.setAdapter(new MyViewPagerAdapter(views));
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new OnPageChangeListener(){ public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub } public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } public void onPageSelected(int arg0) {
// TODO Auto-generated method stub } });ViewPager性能问题
在实际使用ViewPager的时候,发现若采用1080p的素材,大部分测试手机均会出现明显的卡顿和掉针,用户体验很不好。网上有帖子采用延迟加载、优先缓存来解决这个问题。后来换成720p素材,大部分测试机均不会出现卡顿。当为3页时,测试450p为最佳(450*800)。- ViewPager简单实例
http://download.csdn.net/detail/he11o_liu/9572651
Android学习记录:ViewPager实现欢迎页的更多相关文章
- Android学习记录(3)—Android中ContentProvider的基本原理学习总结
一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...
- mono for android 学习记录
C#开发Android应用实战(全 扫描 中文版) 学习记录: 拖完控件后,不要急着按F5,需要重新生成,才能自动修改 Resource.Designer.cs 文件 1. Activity 是基于a ...
- android 学习记录-----------android 活动 意图 碎片
将此篇博客作为记录android项目开发过程中的学习记录
- Android学习笔记之滑动翻页(屏幕切换)
如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧. 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是 ...
- 中级实训Android学习记录——Toast、AlertDialog、ProgressBar
学习记录 2020/11/22 Toast Toast Toast是一个消息提示组件 我们可以设置其显示的位置 自定义其显示的内容 对Toast的简单封装可以达到不同的目的 Toast的默认用法 To ...
- Android学习记录(三)——安装SQLite
这次学习安装SQLite. 一.SQLite简介 重要特性:零配置,即不需要复杂的配置即可使用 详细:https://www.runoob.com/sqlite/sqlite-intro.html 二 ...
- Android学习之ViewPager
1.定义 ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view.其中,android.support.v4是谷歌公司为了解决当前版本碎片化的问题,从而提供的一 ...
- 【Android】Android 学习记录贴
官网 教程学习笔记 Genymotion 安卓虚拟器太慢,用Genymotion(装载eclipse的插件) 利用Genymotion运行Android应用程序 1.首先,点击 来启动或者创建您要使用 ...
- Android学习记录:界面设计
本片文章将记录进行android界面开发时积累的知识 包括 activity全屏 activity跳转 button设计 逐个输入编辑框设计 d0710 合并旧文章总结更新 d0721 添加内容 == ...
随机推荐
- 聪明的质监员[NOIP2011]
时间限制:1 s 内存限制:128 MB [问题描述] 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检 ...
- canvas的学习
canvas的学习 一. //获取画布 var mycanvasEle = document.getElementById("mycanvas");二. //内容 var ctx ...
- Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- PXE+kickstart无人值守安装CentOS 6
本文目录: 1.1 PXE说明 1.2 PXE流程 1.3 部署环境说明 1.4 部署DHCP 1.5 部署TFTP 1.6 提供pxe的bootloader和相关配置文件 1.7 利用原版安装镜像获 ...
- macOS下加载动态库dylib报"code signature invalid"错误的解决办法
一.现象描述 在macOS上搞开发也有一段时间了,也积攒了一定的经验.然而,今天在替换工程中的一个动态库时还是碰到了一个问题.原来工程中用的是一个静态库,调试时发现有问题就把它替换成了动态库.这本来没 ...
- 身在魔都的她,该不该继续"坚持"前端开发?
一 这个女孩儿,是我很好很好很好的一位朋友,也是中学的同学,去年从她的本科大学毕业,毕业后由于没找到合适的工作而选择去培训机构培训了比较火爆的前端开发,之后去了上海找工作,但是由于一些原因在从上一家公 ...
- python基础===zip在python3中的用法
name=["ad","kein","tom"] age=[23,45,22] tel=['157','139','167'] print( ...
- lsof命令详解
--转载 一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied” 我总结一下lsof指令的用法: lsof ...
- Jedis与Redisson选型对比
1 概述 1.1. 主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为无线云管理项目中Redis编程模型的选择提供参考. 2. ...
- 关于<form:select>
今天写基于SSM框架的程序,用到了<form:select>.由于一开始遇到了问题,所以在这里加以记录,供以后查看. 直接看jsp页面的代码 <%@ page language=&q ...