Android开发笔记(二十一)横幅轮播页Banner

这篇博客详细介绍了Android开发中的横幅轮播实现,重点探讨了ViewPager和ViewFlipper组件。内容涵盖ViewPager的概念、常用方法、适配器和监听器,以及ViewFlipper的基本概念和与ViewPager的差异。此外,还讲解了Banner的实现,并提供了代码示例。
摘要由CSDN通过智能技术生成

ViewPager

ViewPager的概念

在前面的博文《 Android开发笔记(十九)底部标签栏TabBar》中,我们提到可以在一个主页面里通过选项卡方式,切换到不同的子页面。那么在手机上还有另外一种切换页面的方式,就是通过手势左右滑动,ViewPager就是这么一个左右滑动来切换页面的控件。
ViewPager的基本思想跟适配视图差不多,都是定义一组元素,通过适配器来展示与响应不同元素的处理,适配视图的相关说明参见《 Android开发笔记(三十八)列表类视图》。


ViewPager的常用方法

下面是ViewPager的常用方法:
setAdapter : 设置ViewPager的适配器
setCurrentItem : 设置当前的页码,即默认打开ViewPager时显示哪一页的内容。
setOnPageChangeListener : 设置ViewPager的页面变化监听器。


ViewPager的适配器

适配器的相关说明参见《 Android开发笔记(三十八)列表类视图》。不过ViewPager并不使用Adapter类系列的适配器,而是使用PagerAdapter。如果ViewPager里面的视图是View与View的子类,那么适配器都用PagerAdapter;如果ViewPager里面的视图Fragment,那么适配器就要用FragmentStatePagerAdapter(其实该类也是来自于PagerAdapter)。废话少说,直接上PagerAdapter的例子代码:
	private class ImageAdapater extends PagerAdapter {
		
		@Override
		public int getCount() {
			return mViewList.size();
		}


		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			return arg0 == arg1;
		}
		
		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			container.removeView(mViewList.get(position));
		}
		
		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			container.addView(mViewList.get(position));
			return mViewList.get(position);
		}
		
	}


ViewPager的监听器

ViewPager一般不监听每个页面项的点击事件,而是监听页面滑动的监听事件,对应的监听器类是OnPageChangeListener。该类的三个方法介绍如下:
onPageScrollStateChanged : 翻页状态改变时调用,状态参数取值说明为:0表示静止,1表示正在滑动,2表示滑动完毕。在翻页过程中,状态值变化依次为:正在滑动->滑动完毕->静止。
onPageScrolled : 在翻页过程中调用。该方法的三个参数取值说明为:第一个参数表示当前页面的序号;第二个参数表示当前页面偏移的百分比,最小值为0,最大值为1;第三个参数表示当前页面的偏移距离,单位px。
onPageSelected : 在页面选择时调用,该方法用得较多。位置参数表示当前页面的序号。


ViewPager的页码指示器

为了方便开发者处理ViewPager的页码显示与切换,Android附带了两个工具,分别是PagerTabStrip和PagerTitleStrip。二者都是在ViewPager的页面上方展示设定的页面标题,不同之处在于,PagerTabStrip类似Tab效果,文本下面有横线;而PagerTitleStrip只是单纯的文本标题效果。下面是这两个工具的使用说明:
1、在布局文件中,二者需要作为ViewPager的的下级节点;
2、在布局文件中,二者本身无需另外定义id,代码中一般也不需要取出它们的对象做什么处理;
3、二者除了展示标题之外,还可自动响应点击事件,点击左侧或右侧的标题,页面会自动切换到左侧或右侧的视图;
4、要设置每页的标题文本,可重写PagerAdapter的getPageTitle,在对应位置返回相应的标题文字;


ViewFlipper

ViewFlipper的概念

设计ViewFlipper的初衷就是给视图翻转实现动画功能,与ViewPager相比,ViewFlipper是自动翻页动画,而ViewPager是手工翻页动画。


ViewFlipper的常用方法

下面是ViewFlipper的常用方法:
setFlipInterval : 设置每次翻页的时间间隔。
setAutoStart : 设置是否自动开始翻页。
startFlipping : 开始翻页。
stopFlipping : 停止翻页。
isFlipping : 判断当前是否正在翻页。
showNext : 显示下一个视图。
showPrevious : 显示上一个视图。
setInAnimation : 设置视图的移入动画。
getInAnimation : 获取移入动画的对象。
setOutAnimation : 设置视图的移出动画。
getOutAnimation : 获取移出动画的对象。
setDisplayedChild : 设置当前展示第几个视图。
getDisplayedChild : 获取当前展示的是第几个视图。


ViewFlipper与ViewPager的区别

1、手势左右滑动产生翻页动作
ViewPager可自动响应左右滑动事件,但ViewFlipper不会自动处理,必须在页面上注册一个手势探测器GestureDetector以及对应的手势监听器OnGestureListener,并重写监听器的onFling方法,根据前后两个手势的位移变化,决定当前是往左翻页还是往右翻页还是不翻页。
2、自动翻页
ViewPager没有可以设置自动翻页的方法,得通过Handler机制来定时调用翻页动作。而ViewFlipper就是为自动翻页而生,startFlipping和stopFlipping两个方法分别用于开始翻页与停止翻页,同时setFlip
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值