Android知識體系總結2020之Android部分之ViewPager篇

ViewPager知識體系圖

1.ViewPager是什麼?

  ViewPager是android擴展包v4包中的類,這個類可以讓用戶左右切換當前的view。

  • 1)ViewPager類直接繼承了ViewGroup類,所有它是一個容器類,可以在其中添加其他的view類。
  • 2)ViewPager類需要一個PagerAdapter適配器類給它提供數據。
  • 3)ViewPager經常和Fragment一起使用,並且提供了專門的FragmentPagerAdapter和FragmentStatePagerAdapter類供Fragment中的ViewPager使用。

2.ViewPager的適配器

  用過ListView或者RecyclerView都知道,凡是類似這種顯示多個Item的控件,Android系統都設置成適配器模式了,因此ViewPager也需要適配器才能去顯示數據,ViewPager的適配器就是PagerAdapter,它需要實現4個方法:

  • getCount():ViewPager顯示的Item個數。
  • boolean isViewFromObject(View view, Object object):功能:該函數用來判斷instantiateItem(ViewGroup, int)函數所返回來的Key與一個頁面視圖是否是代表的同一個視圖(即它倆是否是對應的,對應的表示同一個View)
    返回值:如果對應的是同一個View,返回True,否則返回False。
  • Object instantiateItem(ViewGroup container, int position):這個函數的實現的功能是創建指定位置的頁面視圖。適配器有責任增加即將創建的View視圖到這裏給定的container中,這是爲了確保在finishUpdate(viewGroup)返回時這個已經完成
    返回值:返回一個代表新增視圖頁面的Object
  • void destroyItem(ViewGroup container, int position, Object object):該方法實現的功能是移除一個給定位置的頁面。適配器有責任從容器中刪除這個視圖。這是爲了確保在finishUpdate(viewGroup)返回時視圖能夠被移除。

實例代碼如下:

public class AdapterViewpager extends PagerAdapter {
    private List<View> mViewList;

    public AdapterViewpager(List<View> mViewList) {
        this.mViewList = mViewList;
    }

    @Override
    public int getCount() {//必須實現
        return mViewList.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {//必須實現
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {//必須實現,實例化
        container.addView(mViewList.get(position));
        return mViewList.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {//必須實現,銷燬
        container.removeView(mViewList.get(position));
    }
}

3.ViewPager與Fragment的結合使用

3.1 常用的適配器(FragmentPagerAdapter&FragmentStatePagerAdapter)

FragmentPagerAdapter
FragmentStatePagerAdapter

3.2 ViewPager中Fragment的懶加載

https://blog.csdn.net/linglongxin24/article/details/53205878

3.3 ViewPager中Fragment的生命週期分析

https://blog.csdn.net/qq591920734/article/details/42490667

4.Banner圖的製作原理解析

https://blog.csdn.net/qq_22770457/article/details/51198688

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