android ViewPager和Fragment

ViewPager的應用場景

  • 應用開頭的引導界面html

  • 相似於「微信」或者「今日頭條」標籤頁之間的切換android

使用步驟

第一步:在佈局文件中加入ViewPager組件,並在代碼中得到該組件微信

<android.support.v4.view.ViewPager
        android:id="@+id/bbs_center_viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

第二步:爲ViewPager添加適配器,ViewPager能夠有三種類型的適配器ide

  • PagerAdapter:使用較少,因此沒有去了解佈局

  • FragmentPagerAdapter:適用於Fragment比較少的狀況下,由於這個適配器會將訪問過得Fragment都保存在內存中,當Fragment較多時對內存的消耗就會比較大。post

  • FragmentStatePagerAdapter:適用於Fragment較多的狀況下。當整個Fragment再也不被訪問,它將被銷燬this

示例代碼:code

public class ExamplePagerAdapter extends FragmentStatePagerAdapter{
    List<Fragment> fragments;
    String[] titles;
    
    //fragments裏是ViewPager全部要顯示的Fragment的集合,titles是全部標籤頁的名字的集合
    public ExamplePagerAdapter(FragmentManager fm, List<Fragment> fragments, String[] titles) {
        super(fm);
        this.fragments = fragments;
        this.titles = titles;
    }
    
    //此ViewPager一共有多少個標籤頁能夠滑動
    @Override
    public int getCount() {
        return fragments.size();
    }
    
    //經過此方法返回對應位置標籤頁用到的fragment
    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }
    
    //經過此方法指定每一個標籤頁的名字
    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}

第三步:爲ViewPager綁定適配器,傳入參數htm

ViewPager viewPager = (ViewPager) findViewById(R.id.bbs_center_viewPager);
ExamplePagerAdapter pagerAdapter = new ExamplePagerAdapter (getSupportFragmentManager(), posts, titles);
viewPager.setAdapter(pagerAdapter );

第四步:爲ViewPager綁定監聽器
<!-- 監聽器的寫法之後補上 -->對象

其餘

1.經過ViewPager控制顯示第幾個標籤頁:

@Override
    public void onBackPressed() {
        if (mPager.getCurrentItem() == 0) {
            // If the user is currently looking at the first step, allow the system to handle the
            // Back button. This calls finish() on this activity and pops the back stack.
            super.onBackPressed();
        } else {
            // Otherwise, select the previous step.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
        }
    }

2.在使用FragmentStatePagerAdapter做爲適配器的狀況下保存Fragment的狀態
當使用FragmentStatePagerAdapter 時,若是Fragment不顯示,那麼Fragment對象會被銷燬(滑事後會保存當前界面,以及下一個界面和上一個界面(若是有),最多保存3個,其餘會被銷燬掉)。但在回調onDestroy()方法以前會回調onSaveInstanceState(Bundle outState)方法來保存Fragment的狀態,下次Fragment顯示時經過onCreate(Bundle savedInstanceState)把存儲的狀態值取出來,

參考文章:
Android中Fragment+ViewPager的配合使用
ViewPager三種適配器詳解

相關文章
相關標籤/搜索