解决Android嵌套H5,自定义控制页面能否实现下拉刷新功能_安卓webview 下拉刷新

139 阅读4分钟

在这里插入图片描述

使用场景

  关于Android嵌套H5页面使用下拉刷新功能的问题:当我们在Android中使用第三方框架SmartRefreshLayout实现App的下拉刷新功能时,如果H5页面有部分功能设计到上下滑动的话,就会引起“误触”下拉刷新功能的操作,那么我们应该怎么去解决这个问题呢?


问题描述

  由于我们使用的是Android的下拉刷新,并非是H5的下拉刷新,当H5页面中有个别弹窗页面(比如:地址上下滑动选择组件),遇到这个情况的都应该知道,如果不做处理,当你在使用H5地址选择页面的时候,你滑动地址选择的瞬间,由于是上下滑动,因此也会触发Android的下拉刷新,虽然下拉幅度不大,但是这个原本是不应该进行滑动的页面,它也确实因为你上下滑动选择地址的时候“误触”了下拉操作,即使它不是真正意义上的下拉刷新,但是出现这个拉动的动作,也是会引起用户体验满不好的,下面请看大致思路实现!


思路分析

  相信有点熟悉Android开发的朋友在看思路分析前,已经有了自己的思路:直接在初始化下拉刷新initRefresh()方法中验证你想要的页面能不能执行下拉操作不就行了吗?实践告诉你这个是无法实现的,因为下拉刷新方法在初始化的时候,已经实例过一次,后续调用的时候,并不会重复执行setOnRefreshListener监听事件,只是执行它里面的onRefresh方法,这个执行原理在此就不做详细分析了,涉及到底层原理,生命周期等问题,感兴趣的自行去研究探讨!

  正确的做法可以在webView.setWebViewClient里面的onPageFinished(WebView view, String url)方法实现,由于onPageFinished(WebView view, String url)中url会获取到每次点击请求的路径,所以可以该方法里面针对路径判断来区分哪个页面禁用下拉刷新功能。


解决方案

  根据上述的思路分析,我们可以在Android的webView.setWebViewClient里面的onPageFinished这个方法中实现,具体源码参考下面:

//判断指定页面禁用下拉刷新操作
RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.swipe_refresh);
boolean address = url.contains("填H5页面请求的路由,可以是与众不同的一小段");
if (address) {
    refreshLayout.setEnableRefresh(false);//是否启用下拉刷新功能
    return;
}
refreshLayout.setEnableRefresh(true);//是否启用下拉刷新功能

## 最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的**腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题**,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含**知识脉络 + 诸多细节**,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

【[Android学习PDF+学习视频+面试文档+知识点笔记](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)】

**【Android思维脑图(技能树)】**

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d0f38a993e2e4f208dd8e359ac719d08~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1771129991&x-signature=XBGxlSi85DfzLWBids5M96cg3rE%3D)

**【Android高级架构视频学习资源】**

**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!