畫廊效果,仿百度地圖

今天我們來實現一個無限循環的畫廊效果,仿百度地圖等

先來看一下效果圖

      

需要解決2個問題

1、界面同時顯示多條記錄

2、無限循環


一、先來解決一下第一個問題,我們重寫一下ViewPager, 處理一下顯示寬度

public class GalleryViewPager extends ViewPager {

    private DisplayMetrics displayMetrics;

    public GalleryViewPager(Context context) {
        super(context);
        init();
    }

    public GalleryViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        displayMetrics = getContext().getResources().getDisplayMetrics();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        widthMeasureSpec = MeasureSpec.makeMeasureSpec(displayMetrics.widthPixels - getPageMargin() * 4, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}


接下來佈局,重點是紅色標註地方

android:clipChildren表示是否限制子View在其範圍內



二、實現無限循環,其實是一個僞循環,我們來處理一下Adapter實現

class GalleryAdapter extends FragmentPagerAdapter {

        int count = 10;//默認10

        public GalleryAdapter(FragmentManager fm) {
            super(fm);

        }

        @Override
        public Fragment getItem(int position) {
            return ItemFragment.create(String.format("這裏是第%d頁", (position % count) + 1));
        }

        /**
         * 數量設置爲最大
         * @return
         */
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        /**
         * 真實數量
         * @return
         */
        public int getRealCount() {
            return this.count;
        }
    }


好的,準備工作就緒

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = (GalleryViewPager) findViewById(R.id.view_pager);
        mViewPager.setPageMargin(20);//設置頁面間距
        mViewPager.setAdapter(adapter = new GalleryAdapter(getSupportFragmentManager()));
        mViewPager.setCurrentItem(Integer.MAX_VALUE / 2 + Integer.MAX_VALUE % adapter.getRealCount());//設置起始位置
    }

eclipse項目 附件下載

發佈了43 篇原創文章 · 獲贊 3 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章