Viewpager和PagerSlidingTabStrip的日常玩弄(使用)

在工作中经常会碰到数据分类展示的需求,这个时候就需要使用viewpager嵌套fragment或者自定义tableView(仿IOS Tableview)来实现。今天就秀一下小老虎我平时是怎么样用10分钟完成一个viewpager页面的。

1.XML布局

这里就直接上图了,没有太多技术可言这里写图片描述

2.适配器PagerAdapter

viewpager同样需要一个适配器,方便我们对各个View进行控制。首先要继承PagerAdapter类。至少要覆写以下几个方法。

⑴getCount:获取当前view的总数目;
⑵isViewFromObject:官方API原文意思是:用于判断是否由对象生成界面。这里我们一般返回view==object;
⑶instantiateItem:这个方法返回一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中;
⑷destroyItem:这个方法,是从ViewGroup中移出当前View;

以上4个方法是必须要覆写出来的。接着这里还需要用到PagerTabSlidingTabStrip来显示标题。所以还要覆写一个方法:
⑸getPageTitle:返回一个存放标题的String数组。
 class MyPagerAdapter extends PagerAdapter{
   private ArrayList<View> views;
   private Context context;
   private String titles[]={
           CouponActivity.this.getResources().getString(R.string.shop_coupon),
           CouponActivity.this.getResources().getString(R.string.act_coupon),
        };

        public MyPagerAdapter(Context context,ArrayList<View> views){
            this.context = context;
            this.views = views;
        }


        @Override
        public int getCount() {
            return views.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(views.get(position),0);
            return views.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(views.get(position));
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }
    }

3.简单版的滑动监听器SimpleOnPageChangeListener

正常的viewpager教程都会让你实现一个OnPageChangeListener的借口,并重写里面的3个方法(这个自行百度),但身为懒癌晚期的小老虎我是不能忍受,因为很多情况并不需要重写里面方法,于是我在viewpager的源码中找到了一个SimpleOnPageChangeListener的静态类,继承了这个接口。于是乎我们每次只要写上一个方法返回这个类就OK了。

  public ViewPager.OnPageChangeListener getOnPageChangeListener(){
        return new ViewPager.SimpleOnPageChangeListener();
    }

4.实例化并绑定数据。

前面几步已经把刀磨好了,接下来就到了最简单的收割步骤了。把fragment(或者page),viewpager,adapter,Tab这些实例化之后,把page放在一个ArrayList,然后传给适配器,再绑定适配器,最后给tab设置滑动监听器就OK了。由于懒癌晚期,这里直接粘部分项目源码了

  private PagerSlidingTabStrip toptap;
    private ViewPager mViewPager;
    private ArrayList<View> views;
    private MyPagerAdapter mAdapter;
    private ShopCouponPage shopCouponPage;//商城代金券
    private ActCouponPage actCouponPage;//活动现金券

 private void init() {
        mViewPager = (ViewPager) findViewById(R.id.vp);
        toptap = (PagerSlidingTabStrip) findViewById(R.id.tab);

      //设置标题的样式
        toptap.setTextColor(0xFF8E8e8e);
        toptap.setShouldExpand(true);
        toptap.setTextSize(UIHelper.dipToPx(this, 16));
        toptap.setLightTextColor(0xFF3ED1A5);
        toptap.setIndicatorTextColor(true);
        toptap.setIndicatorColor(0xFF3ED1A5);
        toptap.setUnderlineHeight(2);
        toptap.setUnderlineColor(0x00000000);

        views = new ArrayList<View>();
        shopCouponPage = new ShopCouponPage(this);
        actCouponPage = new ActCouponPage(this);
        views.add(shopCouponPage.getView());
        views.add(actCouponPage.getView());
        mAdapter = new MyPagerAdapter(this,views);
        mViewPager.setAdapter(mAdapter);
        toptap.setViewPager(mViewPager);
        toptap.setOnPageChangeListener(getOnPageChangeListener());
    }

以下是效果图 (page内容请无视)

这里写图片描述这里写图片描述

好了以上就是小老虎的高效viewpager。如果有朋友希望我给一个完整的Demo或者想了解其他知识点在工作中怎么运用请在评论里留下您的邮箱和宝贵意见 ( ^_^ )/~~拜拜.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值