最初版:
(设置图片资源数组):
public int[] getImages() { return new int[]{R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4,R.drawable.a5,R.drawable.a6}; }
(把数组转化为集合):
/*得到图片数组*/
int[] images = getImages();
imgList = new ArrayList<>();
for(int i = 0;i < images.length;i++){
ImageView img = new ImageView(this);
img.setBackgroundResource(images[i]);
imgList.add(img);
}
(ViewPagerAdapter):
将集合放入适配器中使用
private class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return imgList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { //将某个子view添加到容器中 container.addView(imgList.get(position)); return imgList.get(position); } //判断这个view和这个object是否相等. //view:当前正在显示的view. @Override public boolean isViewFromObject(View view, Object object) { return view == object; } //有5个鸡蛋. //有1个篮子(容器),每次只能看见(容纳)一个鸡蛋. //移除(出)某个条目. @Override public void destroyItem(ViewGroup container, int position, Object object) { //从容器中移除某个条目 container.removeView(imgList.get(position)); } }
无线循环版:
class MyAdapter extends PagerAdapter {
//决定了ViewPager内部子控件的数量.
@Override
public int getCount() {
//size=5
//position:0--4
//size=10;
//position:0-9
//position%5
//0-4;
return Integer.MAX_VALUE;
}
//用来初始化,产生一个条目(子视图),类似于getView()方法.
//container:指的就是ViewPager本身.
//position:每个子控件的位置.
@Override
public Object instantiateItem(ViewGroup container, int position) {
//将某个子view添加到容器中
container.addView(images.get(position % images.size()));
return images.get(position % images.size());
}
//判断这个view和这个object是否相等.
//view:当前正在显示的view.
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
//有5个鸡蛋.
//有1个篮子(容器),每次只能看见(容纳)一个鸡蛋.
//移除(出)某个条目.
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//从容器中移除某个条目
container.removeView(images.get(position % images.size()));
}
}
加自动切换:
//开启线程
final AutoRunThread mTask = new AutoRunThread();
mTask.startRun();
//实现广告轮播的自动切换效果
class AutoRunThread implements Runnable {
private long delayTime = 2000;
//任务是否开始
private boolean isStart = false;
//开始任务
public void startRun() {
if (!isStart) {
//清除本次任务之前的所有其他任务
mHandler.removeCallbacks(this);
isStart = true;
mHandler.postDelayed(this, delayTime);
}
}
//停止任务
public void stopRun() {
if (isStart) {
isStart = false;
mHandler.removeCallbacks(this);
}
}
@Override
public void run() {
//获取当前页面的索引值
int currentItem = mVp.getCurrentItem();
Message msg = Message.obtain();
msg.what = 1;
msg.arg1 = ++currentItem;
mHandler.sendMessage(msg);
//mHandler.sendMessageDelayed();
//递归...
mHandler.postDelayed(this, delayTime);
}
}