步驟:
1 新建組件 <android.support.v4.view.ViewPager/>
2 activity中找到組件並設置繼承至PagerAdapter的Adapter類
3 複寫PagerAdapter中的
public int getCount() {}
public Object instantiateItem(ViewGroup container, int position) {}
public boolean isViewFromObject(View view, Object object) {}
public void destroyItem(ViewGroup container, int position, Object object) {}
4 自動循環播放方式:
* 1、定時器:Timer
* 2、開子線程 while true 循環
* 3、ColckManager
* 4、 用handler 發送延時信息,實現循環
第4種方式相對省性能
以下是一個實例
*/
//1 xml定義
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="200dp" />
//2 activity主要代碼
viewPager.setAdapter(new MyPagerAdapter());
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
/**
* 頁面切換後調用
* position 新的頁面位置
*/
@Override
public void onPageSelected(int position) {}
@Override
/**
* 頁面正在滑動的時候,回調
*/
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
}
@Override
/**
* 當頁面狀態發生變化的時候,回調
*/
public void onPageScrollStateChanged(int state) {
}
});
//3 PagerAdapter
private class MyPagerAdapter extends PagerAdapter {
@Override
/**
* 獲得頁面的總數
*/
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
/**
* 獲得相應位置上的view
* container view的容器,其實就是viewpager自身
* position 相應的位置
*/
public Object instantiateItem(ViewGroup container, int position) {
System.out.println("instantiateItem ::"+position);
// 給 container 添加一個view
container.addView(imageList.get(position%imageList.size()));
//返回一個和該view相對的object
return imageList.get(position%imageList.size());
}
@Override
/**
* 判斷 view和object的對應關係
*/
public boolean isViewFromObject(View view, Object object) {
if(view == object){
return true;
}else{
return false;
}
}
@Override
/**
* 銷燬對應位置上的object
*/
public void destroyItem(ViewGroup container, int position, Object object) {
System.out.println("destroyItem ::"+position);
container.removeView((View) object);
object = null;
}
}
//判斷是否自動滾動
private boolean isRunning = false;
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//讓viewPager 滑動到下一頁
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
if(isRunning){
handler.sendEmptyMessageDelayed(0, 2000);
}
};
};
protected void onDestroy() {
isRunning = false;
};