/**
步骤:
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种方式相对省性能
以下是一个实例
*/
//2 activity主要代码
步骤:
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;
};