您的位置:首页 > 移动开发 > Android开发

PagerAdapter滑动页面,onpagechangelistener监听滑动

2015-11-01 11:58 603 查看
1.  PageAdapter是一个抽象类,直接继承于Object,导入android.support.v4.view.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;
}
}
});


截图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息