ViewPager循環滾動
阿新 • • 發佈:2017-09-01
str let nbsp override 上下文 post handler nts span
一.先寫個適配器
1 public class MyPagerAdapter extends PagerAdapter { 2 /** 3 * 上下文 4 */ 5 private Context context; 6 /** 7 * 傳入的數據 8 */ 9 private String[] datas; 10 11 public MyPagerAdapter(Context context, String[] datas) { 12 this.context = context; 13this.datas = datas; 14 } 15 16 @Override 17 public int getCount() { 18 //此處返回最大數 19 return Integer.MAX_VALUE; 20 } 21 22 @Override 23 public boolean isViewFromObject(View view, Object object) { 24 return view == object; 25 } 26 27 @Override28 public Object instantiateItem(ViewGroup container, int position) { 29 //position會隨著時間不斷的增大 所以這裏取position與上datas.length的模 30 int i = position % datas.length; 31 //SmartImageView是github上的一個開源圖片加載框架 32 SmartImageView smartImageView = new SmartImageView(context); 33 smartImageView.setScaleType(ImageView.ScaleType.FIT_XY);34 smartImageView.setImageUrl(datas[i], null); 35 container.addView(smartImageView); 36 37 return smartImageView; 38 } 39 40 @Override 41 public void destroyItem(ViewGroup container, int position, Object object) { 42 container.removeView((View) object); 43 } 44 }
依賴開源框架
compile ‘com.github.snowdream.android:smartimageview:0.0.2‘
接下來是activity中的代碼了
1 private ViewPager viewPager; 2 private MyPagerAdapter pagerAdapter; 3 private Handler handler = new Handler();
1 /** 2 * view pager輪播任務類 3 */ 4 class BannerTask implements Runnable { 5 public void start() { 6 //postDelayed方法的第一個參數就是實現一個Runnable 7 //因為當前類已經實現了Runnable接口所以這裏傳入this,每隔5秒跟新一次 8 handler.postDelayed(this, 5000); 9 } 10 11 @Override 12 public void run() { 13 //獲取當前item 14 int currentItem = viewPager.getCurrentItem(); 15 //當前item加一,展示下一個item 16 currentItem++; 17 viewPager.setCurrentItem(currentItem); 18 handler.postDelayed(this, 5000); 19 } 20 }
1 //設置適配器 2 viewPager.setAdapter(pagerAdapter); 3 //創建輪播任務對象 4 BannerTask task = new BannerTask(); 5 //開始輪播 6 task.start();
不懂的地方請留言
ViewPager循環滾動