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) {
}
});