ViewPager详解(一)简单介绍

ViewPager详解(一)简单介绍

一、什么是ViewPager?

1.1 谷歌官方解释

introduction

1.2 大致意思
  • 布局管理器允许左右翻转带数据的页面,你想要显示的视图可以通过实现PagerAdapter来显示。这个类其实是在早期设计和开发的,它的API在后面的更新之中可能会被改变,当它们在新版本之中编译的时候可能还会改变源码。

  • ViewPager经常用来连接Fragment,它很方便管理每个页面的生命周期,使用ViewPager管理Fragment是标准的适配器实现。最常用的实现一般有FragmentPagerAdapter和FragmentStatePagerAdapter。

  • FragmentPagerAdapter和FragmentStatePagerAdapter是ViewPager和Fragment一起使用时才会用到,后面会详细介绍,这里就不介绍了。

1.3 介绍总结
  • ViewPager是v4包中的一个类。
  • ViewPager继承自ViewGroup,其实是一个容器。
  • ViewPager类似于ListView,也有自己的适配器,里面用来填充数据页面。
  • ViewPager一般和Fragment一起使用,它更方面的管理页面中Fragment的生命周期。

二、ViewPager的简单使用

布局文件中申明控件
  • 由于ViewPager是一个类似ListView的容器,一般使用单标签

     <!--填充整个页面的ViewPager-->
     <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    
代码中设置显示数据
  • 获取控件对象

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    
  • 自定义类继承PagerAdapter填充页面和数据

    • int getCount():返回显示多少个页面
    • boolean isViewFromObject(View view, Object object):判断初始化返回的Object是不是一个View对象
    • Object instantiateItem(ViewGroup container, int position):初始化显示的条目对象
    • void destroyItem(ViewGroup container, int position, Object object):销毁条目对象

      /**
       * 自定义类实现PagerAdapter,填充显示数据
       */
      class MyAdapter extends PagerAdapter {
      
          // 显示多少个页面
          @Override
          public int getCount() {
              return 5;
          }
      
          @Override
          public boolean isViewFromObject(View view, Object object) {
              return view == object;
          }
      
          // 初始化显示的条目对象
          @Override
          public Object instantiateItem(ViewGroup container, int position) {
              // return super.instantiateItem(container, position);
              // 准备显示的数据,一个简单的TextView
              TextView tv = new TextView(MainActivity.this);
              tv.setGravity(Gravity.CENTER);
              tv.setTextSize(20);
              tv.setText("我是天才" + position + "号");
      
              // 添加到ViewPager容器
              container.addView(tv);
      
              // 返回填充的View对象
              return tv;
          }
      
          // 销毁条目对象
          @Override
          public void destroyItem(ViewGroup container, int position, Object object) {
              // super.destroyItem(container, position, object);
              container.removeView((View) object);
          }
      }
      
  • 设置适配器

    viewPager.setAdapter(new MyAdapter());

效果图

Demo1效果图


个人主页
Demo下载地址

以上纯属于个人平时工作和学习的一些总结分享,如果有什么错误欢迎随时指出,大家可以讨论一起进步。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值