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;
}
}
});
截圖:
