ViewPager :
页面切换组件,可以实现页面左右切换 ,ViewPager需要绑定一个特有的Adapter-PagerAdapter
使用步骤:
1 实现PagerAdapter,并且实现里面的方法
2 创建三个布局xml,每个布局为一个pageView ,并将三个View添加到一个List中
3 创建主的Activity的布局,并拿到ViewPager、设置布局List数据、设置PagerAdapter
代码:
1 主Activity代码
public class ViewPagerActivity extends Activity {
//定义相关变量
private View v1,v2,v3;
private ViewPager vPager;
private ArrayList<View> aList;
private MyPageAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_view_pager);
vPager = (ViewPager) findViewById( R.id.viewpager) ;
//动态加载三个View
LayoutInflater li = getLayoutInflater();
v1 = li.inflate(R.layout.activity_view_pager2, null);
v2 = li.inflate(R.layout.activity_view_pager3, null);
v3 = li.inflate(R.layout.activity_view_pager4, null);
aList = new ArrayList<View>();
aList.add(v1);
aList.add(v2);
aList.add(v3);
mAdapter = new MyPageAdapter(aList);
vPager.setAdapter(mAdapter);
}
}
2 PagerAdapter实现类
public class MyPageAdapter extends PagerAdapter {
private ArrayList<View> viewLists;
public MyPageAdapter() {}
public MyPageAdapter(ArrayList<View> viewLists)
{
super();
this.viewLists = viewLists;
}
//获得viewpager中有多少个view
@Override
public int getCount() {
return viewLists.size();
}
/**
* 通常这么写就可以了
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
/**
* ①将给定位置的view添加到ViewGroup(容器)中,创建并显示出来
* ②返回一个代表新增页面的Object(key),通常都是直接返回view本身就可以了,
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewLists.get(position));
return viewLists.get(position);
}
//移除一个给定位置的页面。
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewLists.get(position));
}
}
3 带有ViewPager的Xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="简单的ViewPager使用"
android:background="#FCBC12"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
4 其他三个用在Pager中的布局都一样,只是背景颜色不一样而已
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:background="#FF6666"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一个Page" /> </LinearLayout>