天天看點

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

截圖:

PagerAdapter滑動頁面,onpagechangelistener監聽滑動
PagerAdapter滑動頁面,onpagechangelistener監聽滑動
PagerAdapter滑動頁面,onpagechangelistener監聽滑動