第一種方式:
webView.setOnCustomScrollChangeListener(new ScrollChangeLisWebView.ScrollInterface() {
@Override
public void onSChanged(int l, int t, int oldl, int oldt) {
//WebView的總高度 有縮放比例
float webViewContentHeight = webView.getContentHeight() * webView.getScale();
//WebView的現高度
float webViewCurrentHeight = (webView.getHeight() + webView.getScrollY());
if ((webViewContentHeight - webViewCurrentHeight) < 50) { //或者用 == 0 在(自己除錯即可) 已經處于底端
//.....
}
}
});
如果前端頁面height寫成100%,會導致webView.getScrollY()一直為0,
第二種方式:注入js
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView webView, String s) {
super.onPageFinished(webView, s);
//滑動監聽
String startSave = "\n" +
"document.getElementById(\"page-container\").addEventListener('scroll',function () {\n" +
"console.log(this.scrollHeight);\n" +
"console.log(this.scrollTop);\n" +
"console.log(this.clientHeight);\n" +
"if(this.scrollHeight-this.scrollTop - this.clientHeight < 50){\n" +
// "if(this.scrollHeight-this.scrollTop == this.clientHeight){\n" + 精度計算問題 會有一點誤差 無法相等
"console.log(\"到達底部\");\n" +
"window.java.open(\"到達底部\"); \n" +
"}\n" +
"});";
//注入
webView.loadUrl("javascript:" + startSave);
}
});
//注入、反射
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void open(String msg) {//滑動到底端
//.....
//這里更新UI失敗的話,可以用runOnUiThread或者webView.post(new Runnable() {}
}
}, "java");
可以網頁上直接拿上面代碼除錯即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/277062.html
標籤:其他
上一篇:2021-04-12單元測驗
