Android ViewPager基本用法和片段
示例
AViewPager允许在活动中显示多个片段,可通过向左或向右翻转来导航。甲ViewPager需要被馈送通过使用任一视图或片段的PagerAdapter。
但是,在使用片段分别为FragmentPagerAdapter和的情况下,有两种更具体的实现最有用FragmentStatePagerAdapter。当片段第一次getItem(position)需要实例化时,将为每个需要实例化的位置调用。该getCount()方法将返回总页数,因此ViewPager知道需要显示多少个片段。
双方FragmentPagerAdapter并FragmentStatePagerAdapter保持片段的高速缓存的ViewPager需要证明。默认情况下,ViewPager它将尝试存储最多3个与当前可见片段相对应的片段,以及左右两侧的片段。也FragmentStatePagerAdapter将保留每个片段的状态。
请注意,这两种实现都假定片段将保留其位置,因此,如果保留片段的列表,而不是如在getItem()方法中看到的那样具有静态数目的片段,则将需要创建的子类PagerAdapter并至少重写instantiateItem(),destroyItem()和getItemPosition()方法。
只需按照基本示例中所述在布局中添加ViewPager:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout> 
    <android.support.v4.view.ViewPager
        android:id="@+id/vpPager"> 
    </android.support.v4.view.ViewPager>
</LinearLayout>然后定义适配器,该适配器将确定存在多少页以及为适配器的每一页显示哪个片段。
public class MyViewPagerActivity extends AppCompatActivity {
    private static final String TAG = MyViewPagerActivity.class.getName();
    private MyPagerAdapter mFragmentAdapter;
    private ViewPager mViewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.myActivityLayout);
        //应用适配器
        mFragmentAdapter = new MyPagerAdapter(getSupportFragmentManager());    
        mViewPager = (ViewPager) findViewById(R.id.view_pager);
        mViewPager.setAdapter(mFragmentAdapter);
    }
    private class MyPagerAdapter extends FragmentPagerAdapter{
        public MyPagerAdapter(FragmentManager supportFragmentManager) {
            super(supportFragmentManager);
        }
        //返回要为该页面显示的片段
        @Override
        public Fragment getItem(int position) {
            switch(position) {
                case 0:
                    return new Fragment1();
                case 1:
                    return new Fragment2();
                case 2:
                    return new Fragment3();
                default:
                    return null;
            }
        }
        //返回总页数    
        @Override
        public int getCount() {
            return 3;
        }
    }
}如果您正在使用android.app.Fragment,则必须添加此依赖项:
compile 'com.android.support:support-v13:25.3.1'
如果您正在使用android.support.v4.app.Fragment,则必须添加此依赖项:
compile 'com.android.support:support-fragment:25.3.1'