從頭學android_ViewPager的使用

ViewPager可以實現類似於微信左右滑動切換到不同的選項卡的效果。


1.在佈局文件中定義

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

2.設置fragment


2.1創建多個fragment

應該繼承android.support.v4.app.Fragment 或者 android.app.Fragment。作爲viewPager要顯示的內容

給每個fragment設置要顯示的佈局

當然前提是定義好佈局文件了

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_conversation, null);
}

2.2在viewPager所在的activity裏,初始化viewPager。

viewPager = (ViewPager) findViewById(R.id.vp_main);

2.3準備要顯示的fragment集合

conversationFragment = new ConversationFragment();
groupFragment = new GroupFragment();
searchFragment = new SearchFragment();
fragments = new ArrayList<>();//已有 private ArrayList<Fragment> fragments;
fragments.add(conversationFragment);
fragments.add(groupFragment);
fragments.add(searchFragment);

2.4創建adapter類

public class MainActivityViewPagerAdapter extends FragmentPagerAdapter {

    private ArrayList<Fragment> fragments;

    public MainActivityViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }
}

2.5給viewPager設置adapter

viewPager.setAdapter(new MainActivityViewPagerAdapter(getSupportFragmentManager(), fragments));

3 設置PageChange偵聽

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    /**滑動的過程不斷調用 position是前一個page的index*/
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        //具體邏輯
    }
    /**滑動完了調用 position是後一個page的index*/
    @Override
    public void onPageSelected(int position) {
        //具體邏輯
    }
    /**滑動狀態改變調用*/
    @Override
    public void onPageScrollStateChanged(int state) {
    }
});


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