Android 之 VeiwPager

来源:互联网 发布:mac 不能建立安全连接 编辑:程序博客网 时间:2024/06/15 14:11

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;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic 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;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stub}}




0 0