Android 之 VeiwPager

1.ViewPager的特点:

     ViewPager直接继承与ViewGroup,是一个容器类控件,可以在其中添加其他的view。

     ViewPager需要通过PageAdapter适配器类给他提供数据。

     ViewPager经常和Fragment连用,有FragmentPageAdapter 和FragmentSatePageAdapter类,来提供Fragemtn给ViewPager


2  回顾适配器:

    介绍的BaseAdapter 和CursorAdapter 类及其子类的应用

    BaseAdapter :基本适配器的抽象类型,常用的子类包括ArrayAdapter 和SimpleAdapter。

    如果需要存储复杂数据时,直接继承与BaseAdapter。重写四个方法:

    getCount : 返回数据源的大小,包含多少个列表项

    getItem   : 返回指定位置上的数据

    getItemId : 返回指定位置上item控件对应的id

    getview    : 返回指定位置上上的控件


    CursorAdapter : 继承于BaseAdapter,他为cursor和ListView提供了连接的桥梁

    重写2个方法                 new view()  生成item对应的视图    bindView() 初始化视图对应的控件


3  PageAdapter

    需要重写的方法

    instantiateItem(ViewGroup,int) 根据指定的下标创建viewpager当中的pager页

    destroyItem(viewgroup,int,Object)根据指定的下标移除viewPager中的page页

    getcount:当前适配器加载的数据的条目

   isViewFromObject(View,object):判断viewpage中加载的view和 instantiateItem实例化的view是不是一致的。


4.ViewPager监听页面改变的监听器  OnPageChangeListener
vp.setOnPageChangeListener(new OnPageChangeListener() {
/**
* 页面被选中时回调的方法
* position  :表示页面的位置
* */
@Override
public void onPageSelected(int position) {
for (int i = 0; i < icons.length; i++) {
icons[i].setImageResource(R.drawable.icon02);
}
icons[position].setImageResource(R.drawable.icon01);

}
/**页面滚动时回调的方法
* position:当前页面向下滑动的角标
* positionOffset:当前页面滑动的偏移量
* positionOffsetPixels:当前页面滑动的偏移量对应的像素值
* */
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}
/**当页面滚动状态改变时回调的方法
* 参数包含三种状态:
*  SCROLL_STATE_IDLE  :停止状态
    SCROLL_STATE_DRAGGING:滚动状态
    SCROLL_STATE_SETTLING:选中状态
* */
@Override
public void onPageScrollStateChanged(int position) {
}
});

}


5.PagerTitleStrip的特点
  1.在布局中,把PagerTitleStrip作为viewpager的子控件进行添加。
  2.标题的获取,通过重写适配器的getPageTitle方法,来设置标题。


6.PagerTitleStrip和PagerTabStrip的区别:
  1.PagerTabStrip的底部有一条下划线,选中项的下划线可以改变颜色并且是加粗的。
  2.PagerTabStrip是可以被点击的,跳转到对应的页面,能够与viewpager进行交互。而PagerTitleStrip是不能够被点击的。


  tabStrip.setDrawFullUnderline(false);   //设置是否取消下划线
  tabStrip.setBackgroundColor(Color.RED);  //设置背景颜色
  tabStrip.setTabIndicatorColor(Color.GREEN);  //设置选中项的下划线颜色








pageAdapter 处理前后滑动出错的解决办法

public class MyPageadapter extends PagerAdapter {
	private Context context;
	private List<ImageView> list;
//	private List<View> list;

	public MyPageadapter(Context context, List<ImageView> list) {
//	public MyPageadapter(Context context, List<View> list) {
		super();
		this.context = context;
		this.list = list;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return Integer.MAX_VALUE;
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// TODO Auto-generated method stub
		return arg0 == arg1;
	}

	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		
		View v = list.get(position % list.size());
		ViewGroup parent = (ViewGroup) v.getParent();
		if (parent != null) {
			parent.removeView(v);
		}
		container.addView(v);
		return v;
	}

	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub

	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值