先在XML布局文件里创建一个ViewPager控件
<android.support.v4.view.ViewPager
android:id="@+id/viewPager1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
然后创建N个XML布局文件,供ViewPager使用
例如tab1.xml
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/img1"/>
细节:如果用src属性则可能会造成白边,使用背景属性则不会
定义一个View类型的List数组集合,用于储存N个xml布局文件,
使用getLayoutInflater()方法加载布局文件,将N个xml文件赋值View类型变量,或者直接viewList.add()加入到集合里面。
然后定义viewPager的适配器,viewPager1.setAdapter();
参数为PagerAdapter类。
提供的参数可以通过匿名内部类的方式实现,也可以继承重写的方式实现。
重写的方法有
public int getCount();
public boolean isViewFromObject(View view, Object object)
public Object instantiateItem(ViewGroup container, int position);
public void destroyItem(ViewGroup container, int position, Object object);
getCount()方法用于返回viewPgaer的数量,返回viewList集合数量就可以了。
isViewFromObject()方法暂时不理解,暂时返回 view==object即可
instantiateItem()方法用于滑到另外一个页面时调用,返回viewList中当前页的内容。
destroyItem()从ViewPager中移除页面。
activity中全部代码如下
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager1;
private View view1,view2,view3;
private LayoutInflater inflater;
private List<View> viewList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
viewPager1 = (ViewPager) findViewById(R.id.viewPager1);
inflater = getLayoutInflater();
view1 = inflater.inflate(R.layout.tab1,null);
view2 = inflater.inflate(R.layout.tab2,null);
view3 = inflater.inflate(R.layout.tab3,null);
viewList = new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewPager1.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
});
}