viewpager(viewpager2懒加载)
1、在开发首页、城市选择页和我的优惠券页面时,都使用了组件处理横向页面切换进行分屏展示。满足基本的功能可能是的,但要说完胜却有不足。
2、比如,1)无法将离屏缓存页参数设置为小于1的数,即不能禁用预加载;2)无法通过动态更新数据;3)禁止手势滑动翻页后,依然会有页面滚动的迹象。默认情况下切换到当前页面时,会默认预先加载左右两侧的布局到中(尽管两侧的并不可见),我们称这种情况叫预加载;由于对设置了限制,页面的预加载是不可避免。相信这样设计是有原因的,但是实际需求中,这样是不满足产品需要的。
3、比如:产品不期望在下一屏尚不可见时出现曝光埋点。懒加载只会在页面可见时加载数据。既然不能禁用预加载,那么大家自然就想到了懒加载,这已然是没有办法的办法。
4、的入口方法及调用流程代码:。首先会计算当前位置和左右位置预加载的布局,然后调用方法加载相应位置的布局。然后是真正初始化,此时已经创建好了左中右3个。(,)//初始化,返回需要添加。
5、(,)//销毁,移除指定的。最后才是指定一个为当前的主页面。(,)//设置当前页面的主。(,),该方法表示当前页面正在显示主要。
viewpager(viewpager2懒加载)
1、如果预加载的已经划入屏幕,当前的依然不会改变,除非新的完全划入屏幕,且滑动已经停止才会判断。为了进行布局预加载,首先要通过调用(,)方法创建。
2、搭载的两个实现类和都是通过此方法方法创建对象的。很不幸,和一股脑的在()中进行创建且进行或操作,并没有在()方法中对进行操作。因此,预加载会导致不可见的一股脑的调用、等方法,用户唯有通过。
3、()方法识别当前可见的,这样基于的懒加载方案就实现了。懒加载可以控制数据延迟加载,但无法阻止布局提前创建。
4、实现懒加载要借助的方法,缺此方法不可行。中的方法在1.1。0中已经标记为已过时(@)。2内部通过挂载一个实现分屏显示,2的预加载和缓存基本交由来处理,它设置其实是给设置。
5、2作为独立的库被发布,引入时只需要在。添加如下依赖即可:2:2:1.12和在使用方式上差不多,主要有以下:。()设置屏幕外加载页面数量。()设置是否允许用户输入/触摸。