Days18 ViewPager

1、簡介:ViewPager的功能就是可以使視圖滑動。ViewPager用於實現多頁面的切換效果。該類存在於Google的兼容包裏面,android.support.v4.view.ViewPager。
2、關聯源碼:可增強可讀性,方法的參數會更容易辨別
在libs下new File名爲android-support-v4.jar.properties,src=extra/android/support/v4/src(需要將/轉爲//,轉義字符),close project,openproject
3、預加載:可以通過ViewPager的setOffscreenPageLimit()方法設置預加載頁面數量,默認爲1;預加載就是instantiateItem即實例化下一個可能出現的條目,當前條目(前面若有條目)預加載前面最多一個條目(後面若有條目)預加載後面最多一個條目。比如,頁面從1到2,會實例化3;從2到3,會實例化4,並且會destory1,條目被銷燬後,再需加載,會重新實例化;若設置setOffscreenPageLimit(2),當前條目前最多預加載兩個,當前條目後最多預加載兩個
PagerAdapter:給ViewPager設置適配器
大神詳解:http://blog.csdn.net/harvic880925/article/details/38487149

   /**
     * ViewPager裏面元素的總數量
     */
    @Override
    public int getCount() {
        Log.d("test", "=============getCount========");
        return list.size();
    }

    /**
     * 功能:該函數用來判斷instantiateItem(ViewGroup,
     * int)函數所返回來的Key與一個頁面視圖是否是代表的同一個視圖(即它倆是否是對應的,對應的表示同一個View)
     * 返回值:如果對應的是同一個View,返回True,否則返回False。
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        Log.d("test", "======isViewFromObject=====" + "view" + view
                + ", object" + object);
        return view == object;
    }

    /**
     * 實例化條目 做了兩件事: 1、將參數裏給定的position的視圖,增加到container中,供其創建並顯示
     * 2、返回當前position的View做爲此視圖的Key
     * 自己理解:container爲一個容器,存放並管理ViewPager中要顯示的視圖,此方法中的container與destroyItem方法中的container爲同一個
     * 延伸:(返回一個代表新增視圖頁面的Object(Key),只要你可以與你增加的View一一對應即可)
     * (例如position作爲key返回,在isViewFromObject中根據傳來的key,找到view,判斷與傳來的參數View
     * arg0是不是同一個視圖)
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Log.d("test", "======instantiateItem=====" + "container" + container
                + ", position" + position);
        container.addView(list.get(position));

        return list.get(position);
    }

    /**
     * 銷燬移除一個給定位置的頁面
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        Log.d("test", "======destroyItem=====" + "container" + container
                + ", position" + position+", object"+object);
        container.removeView(list.get(position));
    }
發佈了12 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章