1.layout布局
activity_mian
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.lenovo.redball.MainActivity">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewPager"/>
</LinearLayout>
tab1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@mipmap/tab1"/>
</LinearLayout>
tab2.xml等类似
其中:
定义一个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中移除页面。
MainActivity.java
private ViewPager viewPager;
private LayoutInflater layoutInflater;
private View view1,view2,view3,view4;
private List<View> viewList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
viewPager=(ViewPager)findViewById(R.id.viewPager);
layoutInflater=getLayoutInflater();
view1=layoutInflater.inflate(R.layout.tab1,null);
view2=layoutInflater.inflate(R.layout.tab2,null);
view3=layoutInflater.inflate(R.layout.tab3,null);
view4=layoutInflater.inflate(R.layout.tab4,null);
viewList=new ArrayList<View>();
viewList.add(view1);viewList.add(view2);viewList.add(view3);viewList.add(view4);
viewPager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return viewList.size();
}
@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));
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
});
}