Android面试系列文章2018之Android部分之ViewPager篇

1.ViewPager是什么?

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

  • 1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
  • 2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
  • 3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。

2.ViewPager的适配器

  用过ListView或者RecyclerView都知道,凡是类似这种显示多个Item的控件,Android系统都设置成适配器模式了,因此ViewPager也需要适配器才能去显示数据,ViewPager的适配器就是PagerAdapter,它需要实现4个方法:

  • getCount():ViewPager显示的Item个数。
  • boolean isViewFromObject(View view, Object object):功能:该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View)
    返回值:如果对应的是同一个View,返回True,否则返回False。
  • Object instantiateItem(ViewGroup container, int position):这个函数的实现的功能是创建指定位置的页面视图。适配器有责任增加即将创建的View视图到这里给定的container中,这是为了确保在finishUpdate(viewGroup)返回时这个已经完成
    返回值:返回一个代表新增视图页面的Object
  • void destroyItem(ViewGroup container, int position, Object object):该方法实现的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。

实例代码如下:

public class AdapterViewpager extends PagerAdapter {    private List mViewList;    public AdapterViewpager(List mViewList) {        this.mViewList = mViewList;    }    @Override    public int getCount() {//必须实现        return mViewList.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {//必须实现        return view == object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {//必须实现,实例化        container.addView(mViewList.get(position));        return mViewList.get(position);    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {//必须实现,销毁        container.removeView(mViewList.get(position));    }}

3.ViewPager与Fragment的结合使用

3.1 常用的适配器(FragmentPagerAdapter&FragmentStatePagerAdapter)

FragmentPagerAdapter
FragmentStatePagerAdapter

3.2 ViewPager中Fragment的懒加载

https://blog.csdn.net/linglongxin24/article/details/53205878

3.3 ViewPager中Fragment的生命周期分析

https://blog.csdn.net/qq591920734/article/details/42490667

4.Banner图的制作原理解析

https://blog.csdn.net/qq_22770457/article/details/51198688

更多相关文章

  1. Android开发者e周报 第1期
  2. 视图模式:Android(安卓)ViewPager & WP Pivot
  3. Android流式布局实现
  4. android 2048游戏实现
  5. React Native 调用原生Android/iOS代码实现拨号功能
  6. 在Android平台上实现条型码扫描与识别
  7. Android(安卓)Camera的接口与架构介绍
  8. Android消息推送实现
  9. Android中的数据传递之Parcelable接口

随机推荐

  1. android访问服务器端上传及服务器端接收
  2. Android中mpchartlib柱状图的详细属性以
  3. Android的android:clipChildren属性
  4. android 按钮点击的两种方法以及长按事件
  5. Android开发视频教程大总结—23部视频教
  6. Android版块开发资源大汇总
  7. 启动app闪屏问题以及Android自带主题
  8. Android之layout属性介绍
  9. 玩转Android---UI篇---TextView(文本框)
  10. Android(安卓)APN开发流程分析