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

Android面试系列文章2018之Android部分之ViewPager篇_第1张图片

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实现页面跳转
  2. android 页面容器 下一页很上一页view
  3. Android Studio中点击按钮跳转到其他页面
  4. android 输入键盘遮挡页面的问题
  5. android视图继承关系
  6. 页面未随软键盘上升及android隐藏软键盘总结
  7. Android 页面惯性回弹效果,Nested接口接口简单实现。
  8. android仿今日头条个人中心页面
  9. 第3.2.1节 android基本视图

随机推荐

  1. JDBC_mysql---防sql注入,存储图片
  2. Mybatis的动态sql详解,区别于传统的sql拼
  3. 创建56个民族的sql语句
  4. SQL恢复XP_CMDSHLL 以及XPLOG70.DLL被删
  5. 使用带有派生列的SQL排名函数
  6. vs2012连接sql2012,SQLDriverConnect问题
  7. MySQL数据查询之单表查询
  8. 5 - SQL Server 2008 之 四则运算、比较
  9. Mysql查询需要太多时间来执行。
  10. 做了一个工程(VB+SQLServer)后,老板又要我将