阅读 332

ViewPager该如何选择伴侣呢?

背景介绍

       我经常看到ViewPager采用不同的适配器来进行赋值,PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter,心里面一直有一个疑惑,他们究竟有什么区别呢?ViewPager在什么样的业务场景下回选择对应的Adapter。

      如果你也有同样的困惑,下面将跟着我的脚步,一起学习吧,相信通过下面的学习,你心中的困惑我会为你解开。

官网参考文章

如果英语比较好的,建议看官网,讲解的更好。

developer.android.google.cn/reference/k…

developer.android.google.cn/reference/k…

developer.android.google.cn/reference/k…

PagerAdapter的应用场景

应用场景

ViewPager的每一页就是就是一个View,比如轮播图等。

优点

对于简单View使用PagerAdapter,非常的高效。

缺点 对于复杂的View,并且有交互的View,不太适合这种场景。

FragmentPagerAdapter的应用场景和优缺点

应用场景

页面较少(比如有5、6个左右),并且每一个页面是一个Fragment,比如网易云音乐的首页。

优点

切换的时候,非常的平滑流畅。

缺点

1、尽管当页不可见得时候, view hierarchy可能销毁,但是每一页对应的fragment会保存在内存中。

2、会消耗一定内存。

FragmentStatePagerAdapter的应用场景

应用场景

当有大量页面的时候,这个时候可以使用FragmentStatePagerAdapter,更加高效,像ListView一样。

优点

1、当页面不可见的时候,fragment会被销毁。

2、当拥有很多页面的时候,在内存中没有占用很大的内存。

3、FragmentStatePagerAdapter会对limit以外的page回收,FragmentStatePagerAdapter在销毁Fragment的时候,会保存数据,然后在下一次创建Fragment的时候,会将数据重新进行渲染。

缺点

由于要重新加载页面,所以要重新渲染数据。