1. PageAdapter是一个抽象类,直接继承于Object,导入android.support.v4.view.PagerAdapter。
d. 创建 PagerAdapter 的匿名内部类:
2个抽象方法:
抽象方法1:
public abstract boolean isViewFromObject(android.view.View arg0, java.lang.Object arg1);
这个抽象方法判断是否有对象参数界面。
写法:
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
这样写就可以了,用以判断显示时候为同张照片。
抽象方法2:
public abstract int getCount();
这个抽象方法是获取当前界面数。
写法:
public int getCount() {
return views.size();
}
2个重写的方法:
重写方法1:
public java.lang.Object instantiateItem(android.view.View container, int position);
这方法用以缓冲下一张显示的图片。
写法:
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(views.get(position));
return views.get(position);
}
重写方法2:
public void destroyItem(android.view.ViewGroup container, int position, java.lang.Object object);
当缓冲数量超过规定的缓冲页面数,就会调用此方法,删除特定缓冲页面。
写法:
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(views.get(position));
}
2. 如何使用PageAdapter
a. 在工程layout里创建XML文件,并添加:
<android.support.v4.view.ViewPager
android:id="@+id/tabpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
b. 在此layout里创建要显示的页面;
列:a.xml , b.xml , c.xml
c. 创建 LayoutInflater 对象和ArrayList<View> 对象;
LayoutInflater mLi = LayoutInflater.from(this);
View view0 = mLi.inflate(R.layout.a, null);
View view1 = mLi.inflate(R.layout.b, null);
View view2 = mLi.inflate(R.layout.c, null);
final ArrayList<View> views = new ArrayList<View>();
views.add(view0);
views.add(view1);
views.add(view2);
d. 创建 PagerAdapter 的匿名内部类:
PagerAdapter mPagerAdapter = new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getCount() {
return views.size();
}
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(views.get(position));
}
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(views.get(position));
return views.get(position);
}
};
e.最后调用 setAdapter 方法:
tabpager.setAdapter(mPagerAdapter);
3. 使用 onpagechangelistener 监听滑动:
tabpager.setOnPageChangeListener(new OnPageChangeListener() {
//此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
//arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
//当页面开始滑动的时候,三种状态的变化顺序为(1,2,0)
public void onPageScrollStateChanged(int arg0) {
}
//此方法里有3个参数</span></span>
//当你滑动时一直调用这个方法直到停止滑到
//arg0:表示现在的页面; arg1:表示当前页面偏移百分比; arg2:表示当前页面偏移的像素;
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
//此方法里的 arg0 是表示显示的第几页,当滑到第N页,就会调用此方法,arg0=N;
public void onPageSelected(int arg0) {
switch (arg0) {
case 0:
break;
case 1:
break;
case 2:
break;
default:
break;
}
}
});
截图: