您的位置:首页 > 移动开发 > Android开发

Android之 Viewpager

2016-04-16 12:17 661 查看
Viewpager 可以使视图左右滑动
Viewpager在.xml声明的时候,需要加上前缀android.support.v4.view.
这个是谷歌公司为了让低版本的android系统也能使用viewpager而添加的库

加载显示的页卡

将Layout布局转换为View对象LayoutInflater lf = getLayoutInflater().from(this);
View.inflate(context,resource,root);
配置Adapter
pagerAdater  数据源:List<View>
 FragmentpagerAdater 数据源 : Lst<Fragment>
FragmentStatepagerAdater 数据源 : List<Fragment>

PagerAdater:该适配器通常要自定义一个子类,然后让子类去继承PagerAdapter
                         再实现其中的以下基本方法:
//判断view是否来自于对象
public boolean isViewFromObject(View arg0, Object arg1)
//返回页卡的数量
public int getCount()
//实例化一个页卡
public Object instantiateItem(ViewGroup container, int position)
//其中在实例化中,用container.addView(listview.get(position));即可实例化
//销毁一个页卡
public void destroyItem(ViewGroup container, int position, Object object)
//其中在销毁中,用container.removeView(listview.get(position));方法即可销毁

example:
---------------------------------------------------------------------------------------------------------------------\
/*
*     首先先建立几个 布局文件,再用View.inflate将布局文件传换成View对象
*     将转换成的View对象放入List<View>中通过对象的.add方法
*     要创建一个继承PagerAdapter的子类,一般子类的构造器的参数为数据源(就像上面所做的一样)
*     之后在main函数中将数PagerAdapter声明出来
*     然后让viewpager加载适配器
*/
//MypagerAdapter.java
package com.example.viewpagertest;

import java.util.List;

import android.support.v4.view.PagerAdapter;

import android.view.View;

import android.view.ViewGroup;

public class MyPagerAdapter extends PagerAdapter{

 private List<View>viewlist;

 public MyPagerAdapter(List<View> listview) {

  // TODO Auto-generated constructor stub

  this.viewlist=listview;

 }

 //返回页卡的数量

 @Override

 public int getCount() {

  // TODO Auto-generated method stub

  return viewlist.size();

 }

 

 //判断view是否来自于对象

 @Override

 public boolean isViewFromObject(View arg0, Object arg1) {

  // TODO Auto-generated method stub

  return arg0==arg1;

 }

 

 //实例化一个页卡

 @Override

 public Object instantiateItem(ViewGroup container, int position) {

  // TODO Auto-generated method stub

  container.addView(viewlist.get(position));

  return viewlist.get(position);

 }

 //销毁一个页卡

 @Override

 public void destroyItem(ViewGroup container, int position, Object object) {

  // TODO Auto-generated method stub

  container.removeView(viewlist.get(position));

 }

}

//MainActivity.java部分代码
private List<View> viewList;

 private ViewPager viewpager;

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  viewpager = (ViewPager) findViewById(R.id.pager);

  viewList = new ArrayList<View>();

  /*

   *通过View对象作为PagerAdapter 的适配源

   */

  View view1=View.inflate(this, R.layout.view1, null);

  View view2=View.inflate(this, R.layout.view2, null);

  View view3=View.inflate(this, R.layout.view3, null);

  View view4=View.inflate(this, R.layout.view4, null);

  viewList.add(view1);

  viewList.add(view2);

  viewList.add(view3);

  viewList.add(view4);

  //创建pagerAdapter

  MyPagerAdapter pageradapter =new MyPagerAdapter(viewList);

  

  //让Viewpager 加载适配器

  viewpager.setAdapter(pageradapter);

 }
-----------------------------------------------------------------------------------------------------

给Viewpager添加标题
在MainActivity中
 private PagerTabStrip tab;

 private List<String> titlelist;
//为PagerTabstrip设置一些属性

  tab = (PagerTabStrip) findViewById(R.id.tab);

  tab.setBackgroundColor(Color.BLUE);

  tab.setTextColor(Color.YELLOW);

  tab.setDrawFullUnderline(false);

  tab.setTabIndicatorColor(Color.GREEN);
在MypagerAdapter中
private List<String>titlelist;
//构造器
public MyPagerAdapter(List<View> listview,List<String> titlelist) {

  // TODO Auto-generated constructor stub

  this.viewlist=listview;

  this.titlelist=titlelist;

 }
//返回标题
public CharSequence getPageTitle(int position) {

  // TODO Auto-generated method stub

  return titlelist.get(position);

 }
在ViewPager中添加PagerTabStrip时前面也需要添加android.support.v4.view
PagerTitleStrip和PagerTabStrip用法一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android