ViewPager和Gallery的循環滾動

 

1  對於Gallery的循環滾動,設置adapter的getCount爲Integer.MAX_VALUE。滾動切換效果沒有ViewPager好看

public class GalleryAdapter extends BaseAdapter {
		private List<ImageView>  list;
		public GalleryAdapter(List<ImageView>  list){
			this.list = list;
		}

		public int getCount() {
			return Integer.MAX_VALUE; //讓Gallery可以右側循環滾動
		}

		public Object getItem(int position) {
			return list.get(position % list.size());
		}

		public long getItemId(int position) {
			return position;
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			return list.get(position % list.size());//讓Gallery可以右側循環滾動
		}
	}


2  ViewPager的循環滾動,也可通過設置Count來實現,但是數量有一定的不足之處,本demo實現了ViewPager的單向循環滾動和雙向循環滾動,都使用了2種方式,詳見demo

 // 指引頁面數據適配器
    class GuidePageAdapter extends PagerAdapter {
    	private List<ImageView> pageViews;
    	public GuidePageAdapter(List<ImageView> list) {
			pageViews = list;
		}
        public int getCount() {
            return pageViews.size();
        }
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == arg1;
        }
        public int getItemPosition(Object object) {
            return super.getItemPosition(object);
        }
        public void destroyItem(View arg0, int arg1, Object arg2) {
        	((ViewPager) arg0).removeView(pageViews.get(arg1));
        }
        public Object instantiateItem(View arg0, int arg1) {
            ((ViewPager) arg0).addView(pageViews.get(arg1));
            return pageViews.get(arg1);
        }
        public void restoreState(Parcelable arg0, ClassLoader arg1) {
        }
        public Parcelable saveState() {
            return null;
        }
        public void startUpdate(View arg0) {
        }
        public void finishUpdate(View arg0) {
        }
    }


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章