ViewPager懒加载的简单实现
来源:互联网 发布:python unicode 编辑:程序博客网 时间:2024/06/07 05:42
常用ViewPager的开发者一定知道,谷歌为了增强用户体验,ViewPager加载页面时默认会预加载当前界面的上一页面和下一页面,并销毁其他页面,
分别调用的是
instantiateItem(ViewGroup container, int position)
destroyItem(ViewGroup container, int position, Object object)
这两个方法,使用LogCat可以很容易验证上面的说法。
但是,有时候我们有这样的需求:ViewPager中滑动至某个页面时,才加载当前页面的数据,
这样做,主要是为了避免用户大量的流量损失。
这种做法,称为ViewPager的懒加载。
怎么实现呢?
查看ViewPager有关预加载的源码,我们看到它是这样设定的:
public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES); limit = DEFAULT_OFFSCREEN_PAGES; } if (limit != mOffscreenPageLimit) { mOffscreenPageLimit = limit; populate(); } }
limit默认为1,就是预加载的页面数,
DEFAULT_OFFSCREEN_PAGES
这个是ViewPager中一个fina类型的常量,默认为1
是不是我们调用这个方法,传入0就可以实现懒加载呢?
事实上,我们思考下这段代码中的逻辑,就知道,传入0,是不起作用的。
那怎么实现懒加载?
自定义一个ViewPager。
创建一个MyViewPager的类,将整个ViewPager的源码粘贴进去。
将以下这个参数改为0,
private static final int DEFAULT_OFFSCREEN_PAGES = 0; //默认的加载页面,ViewPager是1个,所以会加载两个Fragment
之后写代码都使用这个ViewPager就可以实现懒加载了。
这里有一点要注意一下,不要使用API版本过高的ViewPager源码,在高版本源码中(ViewPager接近3000行),谷歌改了其中一些逻辑,
即使修改这个参数,也无济于事。
最好找14左右的ViewPager源码。
1 0
- ViewPager懒加载的简单实现
- ViewPager懒加载的实现算法
- 实现ViewPager+Fragment的懒加载功能
- ViewPager+Fragment 懒加载的实现
- Fragment+ViewPager实现真正的懒加载
- ViewPager的简单实现
- viewpager的简单实现
- 简单的ViewPager实现
- viewPager的简单实现
- ViewPager的懒加载
- ViewPager实现Fragment懒加载
- viewpager fragment 实现懒加载
- 如何实现 ViewPager 懒加载
- ViewPager + Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- viewpager的一个简单实现
- 智慧北京:懒加载的ViewPager的实现
- UIImage渲染模式显示图片本身颜色
- 在Mac下开发Android,JavaEE的体验
- SVM算法教科书(二)
- Struts2
- About Storage summary(1)
- ViewPager懒加载的简单实现
- 速度测试(speed test)
- idea编译module时报attendance.unaligned.apk (拒绝访问。)
- C++-----直接声明对象PK new对象
- 深入分析Android (build/core/*.mk脚本)
- echo "$1"
- 神奇的圆周率
- BQ27510模拟IIC读取数据详解
- 112. Path Sum