WebView控件點擊圖片事件

在WebView中加載的是Html也面,在開發(fā)中都是Web前端人員寫好以后給個鏈接我們去用webView進行l(wèi)oadUrl。但是有時突然產品想讓你把加載回來的圖片進行大圖的展示,比如單擊或者長按查看大圖,但是webView控件的點擊事件并沒有作用?。。∫韵率菍崿F的思路
  • 首先我們拿到html中加載圖片的標簽img.
  • 然后取出其對應的src屬性
  • 循環(huán)遍歷設置圖片的點擊事件
  • 將src作為參數傳給java代碼
//java回調js代碼,不要忘了@JavascriptInterface這個注解,不然點擊事件不起作用
mWebView.addJavascriptInterface(new JsCallJavaObj() {
            @JavascriptInterface
            @Override
            public void showBigImg(String url) {
                Toast.makeText(mContext, "圖片路勁"+url, Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(mContext, BigImageActivity.class);
                intent.putExtra(Constants.IMG_URL,url);
                startActivity(intent);
            }
        },"jsCallJavaObj"); 
 mWebView.setWebViewClient(new WebViewClient(){
            @Override
      public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                setWebImageClick(view);
            }
        });
         /**
     * 設置網頁中圖片的點擊事件
     * @param view
     */
    private  void setWebImageClick(WebView view) {
        String jsCode="javascript:(function(){" +
                "var imgs=document.getElementsByTagName(\"img\");" +
                "for(var i=0;i<imgs.length;i++){" +
                "imgs[i].onclick=function(){" +
                "window.jsCallJavaObj.showBigImg(this.src);" +
                "}}})()";
        mWebView.loadUrl(jsCode);
    }

     /**
     * Js調用Java接口
     */
    private interface JsCallJavaObj{
        void showBigImg(String url);
    }

實現功能的核心就是這段Js代碼,也就是jsCode這個變量。通過document對象的getElementsByTagName方法去獲取到img標簽。然后通過循環(huán)去遍歷設置其對應的點擊事件。

window.jsCallJavaObj.showBigImg(this.src) 其中jsCallJavaObj是我們在java代碼中所定義的一個接口的對象,showBigImg()是這個接口中的回調方法。this.src就是當前點擊圖片的url.

注意:上面的js代碼書寫一定不能有誤,不然就做了無用功了,以javascript:(參數)開始,以()結束。
原文鏈接:https://blog.csdn.net/Jiang_Rong_Tao/article/details/58586041

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容