自定义适配器
public class MyPagerAdapter extends PagerAdapter{
添加两个方法
@Override//实例化Item
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position));
return list.get(position);
}
@Override//销毁Item
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(list.get(position));
}
}
viewPager.setOffscreenPageLimit(3);//预加载 viewpager界面
布局中添加ViewPager
<android.support.v4.view.ViewPager>
int[] imags = {R.drawable.image1,R.drawable.image2,R.drawable.image3};
//得到数据源 图片的
list = new ArrayList<ImageView>();
for(int i =0;i<imags.length;i++){
ImageView imageView = new ImageView(this);
imageView.setImageResource(imags[i]);
list.add(imageView);
}
//viewpager 滑动的监听
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
/**
* 当前viewpager被选中时 回调此方法
* int arg0:当前选中viewpager的下标
*/
//@Override
public void onPageSelected(int arg0) {
//将所有的指示图片 默认 不选中
for(int i=0;i<imags.length;i++){
icons[i].setEnabled(true);
}
//将当前下标的指示图片 选中
icons[arg0].setEnabled(false);
}
* viewpager正在滑动时回调的方法
* int arg0:滚动viewpager的下标
* float arg1:滚动的偏移量[0,1]
* int arg2: 偏移量 像素
//@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
* 当前viewpager状态改变时回调
* SCROLL_STATE_DRAGGING:正在滑动的状态
* SCROLL_STATE_IDLE:静止状态
* SCROLL_STATE_SETTLING:选中的状态
*/
//@Override
public void onPageScrollStateChanged(int arg0) {
}
}
//初始化图片指示
public void initIcon(){
LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout);
icons = new ImageView[imags.length];
for(int i=0;i<imags.length;i++){
icons[i]= (ImageView) layout.getChildAt(i);//将布局中的指示图片加到数组中
icons[i].setEnabled(true);
icons[i].setTag(i);//给指示图片添加下标
//给图片添加监听事件
icons[i].setOnClickListener(new OnClickListener() {
//@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//viewpager滑动到当前页 (Integer) v.getTag()
viewPager.setCurrentItem((Integer) v.getTag());
}
});
icons[0].setEnabled(false);
}
}
//ViewPager自动循环
viewPager.setAdapter(new MyPagerAdapter());
//viewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size());
handler.sendEmptyMessageDelayed(1, 2000);
}
//让自动轮播
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
int i = viewPager.getCurrentItem();//获取当前显示
if(i==list.size()-1){//判断是否是最后一条
viewPager.setCurrentItem(0, true); //回到第一条
}else{
viewPager.setCurrentItem(i+1, true);//正常往下走
}
// viewPager.setCurrentItem(viewPager.getCurrentItem());
sendEmptyMessageDelayed(1, 2000);
};
};