view pager是安卓3.0引入的一个页面容器组件,用于手势滑动切换页面,常常用于页面导航或者图片轮播。view pager的最主要的是一个viewadapter适配器。我们来通过代码具体看
private myFriend friend;
private myMap map;
private myAbout about;
private View viewfriend;
private View viewmap;
private View viewmine;
private ViewPager viewPager;//viewpager
private List<View> viewList=new ArrayList<View>();//把需要滑动的页卡添加到这个list中
private LinearLayout btnFriend;
private LinearLayout btnMap;
private LinearLayout btnMine;
btnFriend = (LinearLayout) findViewById(R.id.main_btn_Friend);
btnMap=(LinearLayout)findViewById(R.id.main_btn_Map);
btnMine=(LinearLayout)findViewById(R.id.main_btn_mine);
viewPager=(ViewPager)findViewById(R.id.main_main);
viewfriend=View.inflate(this,R.layout.activity_my_friend,null);
viewmap=View.inflate(this,R.layout.activity_my_map,null);
viewmine=View.inflate(this,R.layout.activity_my_mine,null);
viewList.add(viewfriend);
viewList.add(viewmap);
viewList.add(viewmine);
myPagerAdapter adapter=new myPagerAdapter(viewList);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1);
btnMap.setOnClickListener(new View.OnClickListener() {//通过底部导航栏来实现页面的切换
@Override
public void onClick(View v) {
viewPager.setCurrentItem(1);
}
});
btnFriend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(0);
}
});
btnMine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(2);
}
});
public class myPagerAdapter extends PagerAdapter {
private List<View> viewList;
public myPagerAdapter(List<View> viewList)
{
this.viewList = viewList;
}
@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) {
View v=viewList.get(position);
ViewGroup parent = (ViewGroup) v.getParent();
if (parent != null) {
parent.removeAllViews();
}
container.addView(viewList.get(position));
return viewList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
container.removeView(viewList.get(position));
//container.removeView(viewList.get(position));
}
}
流程如下:首先初始化你需要添加的页面,加入到list中,然后初始适配器,并设置view pager的适配器。mypageradapter是一个自定义的类,继承与pageradapter,并重写了几个方法,以适应项目要求。