viewPager的基本使用

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){};
 
效果图:

 

posted @ 2015-10-31 12:35 冷月舞痕 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值