1. 程式人生 > >ViewPager實現簡易輪播圖

ViewPager實現簡易輪播圖

介面卡:

public class MyAdapter extends PagerAdapter {
	private Context context;
	private List<Integer> list;
	public MyAdapter(Context context, List<Integer> list) {
		super();
		this.context = context;
		this.list = list;
	}
	//總數
	@Override
	public int getCount() {
		return Integer.MAX_VALUE;//最大值
	}
	//得到的檢視與新增進來的是否一致  如果一致 返回true
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0==arg1;
	}
	//建立檢視
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		//建立ImageView 
		ImageView imageView = new ImageView(context);
		//設定圖片  src 按照比例進行展示圖片  Background  全部充滿展示
		imageView.setImageResource(list.get(position%list.size()));//通過取模的形式 在list集合中取出圖片
		//getResources res檔案
//		imageView.setBackground(context.getResources().getDrawable(list.get(position)));
		//拉伸
		imageView.setScaleType(ScaleType.FIT_XY);
		container.addView(imageView);
		
		return imageView;
	}
	//刪除檢視
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		container.removeView((View) object);
	}
}

MainActivity:

public class MainActivity extends Activity {
	private ViewPager view_pager;
	private RadioGroup radio_group;
	private List<Integer> list;
	private Handler handler=new Handler(){
		@Override
		public void handleMessage(Message msg) {
			msg.what++;
			view_pager.setCurrentItem(msg.what);
			handler.sendEmptyMessageDelayed(msg.what, 1500);
			super.handleMessage(msg);
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		view_pager = (ViewPager) findViewById(R.id.view_pager);
		radio_group = (RadioGroup) findViewById(R.id.radio_group);
		
		list = new ArrayList<Integer>();
		list.add(R.drawable.g1);
        list.add(R.drawable.g2);
        list.add(R.drawable.g3);
        list.add(R.drawable.g4);
        list.add(R.drawable.g5);
        MyAdapter adapter = new MyAdapter(MainActivity.this,list);
        view_pager.setAdapter(adapter);
        //將當前預設展示的圖片 設定在中間
        view_pager.setCurrentItem(list.size()*10000);
        //得到圖片的位置
        //延遲1秒 執行runnable
        handler.sendEmptyMessageDelayed(view_pager.getCurrentItem(), 1500);
        //頁選中監聽
        view_pager.setOnPageChangeListener(new OnPageChangeListener() {
        	//選擇的頁
			@Override
			public void onPageSelected(int arg0) {
				//當選中第?頁時,選擇對應的Button
				switch (arg0%list.size()) {
				case 0:
					radio_group.check(R.id.radio1);
					break;
				case 1:
					radio_group.check(R.id.radio2);
					break;
				case 2:
					radio_group.check(R.id.radio3);
					break;
				case 3:
					radio_group.check(R.id.radio4);
					break;
				case 4:
					radio_group.check(R.id.radio5);
					break;

				default:
					break;
				}
			}
			//頁的偏移量
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {}
			//頁的狀態
			@Override
			public void onPageScrollStateChanged(int arg0) {}
		});
	}
}