Android知识体系总结2020之Android部分之ViewPager篇

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<View> mViewList;

    public AdapterViewpager(List<View> 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值