为了账号安全,请及时绑定邮箱和手机立即绑定

【WebView】WebView为图片添加点击事件

标签:
Java

思路分析


  • 首先我们拿到html中加载图片的标签img.

  • 然后取出其对应的src属性

  • 循环遍历设置图片的点击事件

  • 将src作为参数传给java代码

  • 在java回调方法中对界面进行跳转处理,用PhotoView加载大图实现,便于手势的操作


效果展示


[图片上传失败...(image-84c01-1533805276391)]

首先我们模拟加载百度的主页


        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("https://www.baidu.com/");

在界面加载完以后去给网页中的图片设置点击监听


//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].=function(){" +                "window.jsCallJavaObj.showBigImg(this.src);" +                "}}})()";
        mWebView.loadUrl(jsCode);
    }     /**
     * Js調用Java接口
     */
    private interface JsCallJavaObj{        void showBigImg(String url);
    }

其实要实现功能的核心就是这段Js代码,也就是jsCode这个变量。通过document对象的getElementsByTagName方法去获取到img标签。然后通过循环去遍历设置其对应的点击事件。

  • window.jsCallJavaObj.showBigImg(this.src) 其中jsCallJavaObj是我们在java代码中所定义的一个接口的对象,showBigImg()是这个接口中的回调方法。this.src就是当前点击图片的url.



作者:On丶
链接:https://www.jianshu.com/p/5d7b999a3ed5


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消