viewPager的基本使用

viewPager是android扩展包v4中的类,这个类可以使用户左右切换当前的view。

特性:

1.viewPager直接继承了viewGroup类,所以它是一个容器类,可以在其中添加其它的view

2.viewPager类需要一个PagerAdapter适配器类给他提供数据

3.viewPager经常个Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类

主意:在编写viewpager的使用中,还需要使用两个组件分别是PagerTitleStrip和PagerTabStrip类,PagerTitleStrip类直接集成了ViewGroup类,而PagerTabStrip继承了PagerTitleStrip类,所以这两个类也是容器类

代码XML:

<android.support.v4.view.ViewPager

    android:id="@+id/viewpager"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content">

  <android.support.v4.view.PagerTabStrip

    android:id="@+id/tabstrip"

    android:layout_width="wrap_content"

    android:layut_heigth="50dip"

    android:gravity="center"/>

</android.support.v4.view.ViewPager>

 

MainActivity.java:

   ArrayList<View> viewContainter = new ArrayList<View>();
    ArrayList<String> titleContainer = new ArrayList<String>();

//取消tab下面的长横线

tabStrip.setDrawFullUnderline(flase);

//设置tab的背景颜色

tabStrip.setBackGroundColor(this.getResources().getColor(R.color.red) );

/设置当前tab页的下划线颜色

tabStrip.setTabIndicatorColor(this.getResources().getColor(R.color.red) );

tabStrip.setTextSpacing(200);

     View view1 = LayoutInflater.from(this).inflate(R.layout.tab1, null);
        View view2 = LayoutInflater.from(this).inflate(R.layout.tab2, null);
        View view3 = LayoutInflater.from(this).inflate(R.layout.tab3, null);
        View view4 = LayoutInflater.from(this).inflate(R.layout.tab4, null);
      //viewpager开始添加view
        viewContainter.add(view1);
        viewContainter.add(view2);
        viewContainter.add(view3);
        viewContainter.add(view4);
      //页签项
        titleContainer.add("网易新闻");
        titleContainer.add("网易体育");
        titleContainer.add("网易财经");
        titleContainer.add("网易女人");
pager.setAdapter(new PagerAdater(){
  //viewpager中的组件数量
    public int getCount(){
      return viewContainter.size();
    }
  //滑动切换时候应该销毁当前组件
    public void destroyItem(ViewGroup container,int position,Object object){
      ( (viewpager)container ).removeView(viewContainter.get(position) );
    }
  //每次滑动应该生成的组件
    public Object instantiateItem(ViewGroup container,int position){
      ( (viewpager)container ).addView(viewContainter.get(position) );
      return viewContainter.get(position);
    }
  //必重写的方法
    public boolean isViewFromObject(View arg0,Object arg1){
      return arg-==arg1;
    }
    public int getItemPosition(Object object){
      return super.getItemPosition(object);
    }
    public CharSequence getPageTitle(int position){
      return titleContainer.get(position);
    }
 
} );
//  滑动监听
     pager.setOnPageChangeListener(new OnPageChangeListener() {
            @Override
            public void onPageScrollStateChanged(int arg0) {
                Log.d(TAG, "--------changed:" + arg0);
            }
 
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                Log.d(TAG, "-------scrolled arg0:" + arg0);
                Log.d(TAG, "-------scrolled arg1:" + arg1);
                Log.d(TAG, "-------scrolled arg2:" + arg2);
            }
 
            @Override
            public void onPageSelected(int arg0) {
                Log.d(TAG, "------selected:" + arg0);
            }
        });
 
主意:
对于PargerAdapter类,必须要重写4个方法:
public Object instantiateItem(ViewGoup container,int position){};
public void destroyItem(ViewGroup container,int postion ,Object object){};
public int getCount(){};
public boolean isViewFromObject(View arg0,Object arg1){};
 
效果图:

150920_Y0Ck_932977.png

 

posted @ 2015-10-31 12:35  冷月舞痕  阅读(341)  评论(0编辑  收藏  举报