PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdapter,这两个adapter都是Fragment的适配器,用于实现Fragment的滑动效果,这两个adapter的使用和区别这次就先不介绍了,等下次有时间再做详细的介绍。
PagerAdapter主要是viewpager的适配器,而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件,可以实现控件的滑动效果,比如咱们在软件中常见的广告栏的滑动效果,用viewPager就可以实现。今天主要介绍如何使用viewPagr并重写PagerAdapter实现常见广告栏的滑动效果。
PagerAdapter用法简介
首先,如果继承pageradapter,至少必须重写下面的四个方法1 instantiateItem(ViewGroup, int)2. destroyItem(ViewGroup, int, Object)
3. getCount()
4. isViewFromObject(View, Object)
下面我们以代码的形式,说明这四个方法的含义以及如何使用
01.
private
class
ViewPagerAdapter
extends
PagerAdapter {
02.
03.
// 获取要滑动的控件的数量,在这里我们以滑动的广告栏为例,那么这里就应该是展示的广告图片的ImageView数量
04.
@Override
05.
public
int
getCount() {
06.
return
images.size();
07.
}
08.
09.
// 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可
10.
@Override
11.
public
boolean
isViewFromObject(View arg0, Object arg1) {
12.
return
arg0 == arg1;
13.
}
14.
15.
// PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁
16.
@Override
17.
public
void
destroyItem(ViewGroup view,
int
position, Object object) {
18.
view.removeView(images.get(position));
19.
}
20.
21.
// 当要显示的图片可以进行缓存的时候,会调用这个方法进行显示图片的初始化,我们将要显示的ImageView加入到ViewGroup中,然后作为返回值返回即可
22.
@Override
23.
public
Object instantiateItem(ViewGroup view,
int
position) {
24.
view.addView(images.get(position));
25.
return
images.get(position);
26.
}
27.
}
实现了这四个方法,就可以实现滑动的效果了。
android ViewPager滑动事件讲解
今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究:
首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener
OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled ,onPageSelected)
onPageScrollStateChanged(int arg0) ,此方法是在状态改变的时候调用,其中arg0这个参数
有三种状态(0,1,2)。arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
当页面开始滑动的时候,三种状态的变化顺序为(1,2,0),演示如下:
当viewPager状态改变时候的代码块:
打印结果:
onPageScrolled(int arg0,float arg1,int arg2) ,当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到
调用。其中三个参数的含义分别为:
arg0 :当前页面,及你点击滑动的页面
arg1:当前页面偏移的百分比
arg2:当前页面偏移的像素位置
(参见官网:http://docs.eoeandroid.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageScrolled(int, float, int))
演示如下:
页面滚动时侯代码:
日志打印:
onPageSelected(int arg0) : 此方法是页面跳转完后得到调用,arg0是你当前选中的页面的Position(位置编号)。