1. 程式人生 > >ViewPager的自動無線輪播

ViewPager的自動無線輪播

public class MainActivity extends Activity {

	private ViewPager vp;
	private LinearLayout ll;
	private ProgressBar par;
	private WebView webview;
	private ArrayList imglist;
	private ArrayList yuanList;
	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			vp.setCurrentItem(vp.getCurrentItem() + 1);
			// handler.sendEmptyMessageAtTime(0, 2000);
			handler.sendEmptyMessageDelayed(0, 2000);
		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		vp = (ViewPager) findViewById(R.id.vp);
		ll = (LinearLayout) findViewById(R.id.ll);
		// par = (ProgressBar) findViewById(R.id.pbar);
		// webview = (WebView) findViewById(R.id.web);

		// 建立輪播
		initLunBo();

		// 設定介面卡
		vp.setAdapter(new Myadater());
		handler.sendEmptyMessageDelayed(0, 2000);
		// handler.sendEmptyMessageAtTime(0, 2000);
		// 設定滑動件聽
		vp.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				int newposition = arg0 % yuanList.size();
				for (int i = 0; i < yuanList.size(); i++) {
					yuanList.get(i).setSelected(false);
				}
				yuanList.get(newposition).setSelected(true);

			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
				// TODO Auto-generated method stub

			}
		});
		
		// viewpager的觸控事件,點選圖片停止輪播,鬆開繼續輪播
		vp.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
				case MotionEvent.ACTION_DOWN:
					//點選觸控圖片後,清空handler訊息
					handler.removeCallbacksAndMessages(null);
					break;
				case MotionEvent.ACTION_UP:
					//鬆開手之後,繼續發訊息開始輪播
					handler.sendEmptyMessageDelayed(0, 2000);
					break;

				default:
					break;
				}
				return false;
			}
		});
	}

	class Myadater extends PagerAdapter {

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return Integer.MAX_VALUE;
		}

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			int newposition = position % imglist.size();
			ImageView imageView = imglist.get(newposition);
			container.addView(imageView);
			return imageView;
		}

		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			int newposition = position % imglist.size();
			container.removeView(imglist.get(newposition));
			// super.destroyItem(container, position, object);
		}

		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			// TODO Auto-generated method stub
			return arg0 == arg1;
		}

	}

	private void initLunBo() {
		imglist = new ArrayList();
		yuanList = new ArrayList();
		int[] picture=new int[]{R.drawable.a,R.drawable.aa,R.drawable.aaa,R.drawable.aaaa};

		for (int i = 0; i < picture.length; i++) {
			//創建出一個imageview物件,設定viewPager的每頁圖片
			ImageView imageView = new ImageView(MainActivity.this);
			imageView.setImageResource(picture[i]);
			//測量值
			imageView.layout(0, 0, 200, 200);
			//圖片平鋪的型別
			imageView.setScaleType(ScaleType.CENTER_CROP);
			//存放進圖片集合
			imglist.add(imageView);
			//建立小圓點
			ImageView imageView2 = new ImageView(MainActivity.this);
			imageView2.setBackgroundResource(R.drawable.select);
			imageView2.setPadding(5, 5, 5, 5);
			//把小圓點放進擺放顯示圓點的佈局裡
			ll.addView(imageView2);
			//存放進圓點集合
			yuanList.add(imageView2);
			
		}
		
	}

}