直播平臺軟體開發,監聽WebView滑動到底部的兩種方式
直播平臺軟體開發,監聽WebView滑動到底部的兩種方式
第一種方式:自定義webView,實現onScrollChanged方法,通過介面的方式暴露出去。
public class ScrollChangeLisWebView extends WebView { public ScrollChangeLisWebView(Context context) { super(context); } //實時滑動監控 //引數l代表滑動後當前位置,old代表原來原值 @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); mScrollInterface.onSChanged(l, t, oldl, oldt); } public ScrollInterface mScrollInterface; //監控滑動 public void setOnCustomScrollChangeListener(ScrollInterface scrollInterface) { this.mScrollInterface = scrollInterface; } public interface ScrollInterface { public void onSChanged(int l, int t, int oldl, int oldt); } }
使用:
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) < 10) { //儘量不要用==0,有時候精度問題導致無法完全相等(自己除錯即可) // 已經處於底端 //..... } } });
常見的坑:
1.如果前端頁面height寫成100%,會導致webView.getScrollY()一直為0,這個我沒碰到,百度有看到別人出現這種;如果出現這種,找前端溝通調整即可。
2.由於原生WebView相容性很差,如果使用騰訊的X5WebView,webView.getScrollY()也會一直為0,這時候使用webView.getWebScrollY()即可,這種我碰到了。
第二種方式:注入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");
注入js的方式需要與前端約定好呼叫方法,比如page-container就是前端頁面的一個標籤。
以上就是直播平臺軟體開發,監聽WebView滑動到底部的兩種方式, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2886883/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播app開發搭建,載入Html片段監聽滑動到底部APPHTML
- 直播平臺開發,自定義中間向兩邊滑動的滑動條
- 直播平臺軟體開發,卡片式輪播圖,可左右滑動
- 直播平臺軟體開發,Extjs Grid自動換行JS
- 直播平臺軟體開發,Android程式碼模擬觸控、點選及滑動等事件Android事件
- 直播平臺軟體開發,flutter Wrap 自動換行元件Flutter元件
- 直播平臺軟體開發,完整擷取整個螢幕的截圖方式
- 直播平臺軟體開發,Uniapp動態設定元件顏色APP元件
- 直播軟體app開發,左右自動滑動的輪播圖廣告APP
- 直播平臺軟體開發,flex佈局例項Flex
- 直播平臺軟體開發,cocos lua --定時器的使用定時器
- 直播平臺搭建,動態設定ListView的高度的兩種方法View
- flutter 中監聽滑動事件Flutter事件
- HTML+CSS底部footer兩種固定方式HTMLCSS
- 直播平臺軟體開發,簡單易修改的彈框元件元件
- 如何開發直播平臺,直播平臺開發需要CDN嗎
- 從 DevOps 到平臺工程:軟體開發的新正規化dev
- 將Java應用部署到SAP雲平臺neo環境的兩種方式Java
- 直播平臺軟體開發,Android 10 拍照和相簿選擇Android
- 直播平臺軟體開發,實現自定義標題欄
- 直播平臺軟體開發,Android 計時器,定時功能Android
- 糅合兩種開發模式的快速開發平臺解決方案模式
- 直播平臺原始碼開發,簽到功能的實現原始碼
- Python進行開發的兩種方式Python
- 軟體快速開發平臺的優勢
- 直播軟體搭建,橫版自動滑動的輪播圖
- 直播軟體開發,自動滾動banner
- 短視訊app開發,介面滑動到底的幾種實現方式APP
- 直播軟體搭建,vue路由跳轉的四種方式Vue路由
- Oracle啟動兩個監聽Oracle
- 直播平臺軟體開發,前端實現登入拼圖驗證前端
- 直播平臺軟體開發,uni-app實現選項卡功能APP
- 直播平臺軟體開發,登陸時獲取當前時間
- 直播平臺原始碼,JavaScript 的四種除錯輸出方式原始碼JavaScript除錯
- 直播平臺軟體開發,一個簡單的Android登入實現demoAndroid
- 直播平臺軟體開發過程中的雲端儲存和備份
- 思泉軟體開發平臺與傳統軟體開發的優勢
- 直播平臺搭建原始碼,qt自定義滑動按鈕原始碼QT