ViewPager的自動無線輪播
阿新 • • 發佈:2019-01-26
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); } } }