PagerAdapter滑动页面,onpagechangelistener监听滑动

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;
		}
	}
}); 


截图:












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值