分析
拥有重头开始与自动轮播功能
public class ViewPageActivity extends Activity {
// @ViewInject(R.id.vp)
ViewPager viewPager;
List<ImageView> list = new ArrayList<>();
// 存放图片data
int[] data = new int[]{R.drawable.lufei, R.drawable.suolong, R.drawable.namei, R.drawable.luobin};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_page);
// List添加ImageView控件
for (int i = 0; i < data.length; i++){
ImageView imageView = new ImageView(this);
imageView.setImageResource(data[i]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
list.add(imageView);
}
viewPager = (ViewPager) findViewById(R.id.vp);
viewPager.setAdapter(new VPAdapter());
// 设置ViewPager初始的Item
viewPager.setCurrentItem(0);
// 实现自动轮播功能
luobo();
}
Handler handler;
private void luobo() {
if (handler == null){
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// 设置当前条目
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
handler.sendMessageDelayed(Message.obtain(), 2000);
}
};
}
handler.sendMessageDelayed(Message.obtain(), 2000);
}
// 注意它集成的是PagerAdapter,而不是BaseAdapter
class VPAdapter extends PagerAdapter{
/**
* 一共有多少个条目
* 如果只有list.sise(),等到条目完了,从头开始时,会不美观,不如设置一个够用户翻阅的条目
* @return
*/
@Override
public int getCount() {
return list.size()+3000;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position%list.size()));
return list.get(position%list.size());
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(list.get(position%list.size()));
}
}
}
XML
只有ViewPager一个控件,就不贴出来了