Android使用WebView实现图片点击的监听

本文介绍如何在Android中使用WebView实现对页面内图片点击事件的监听。通过创建监听类并利用@JavascriptInterface注解,将Java方法暴露给JavaScript调用,再在JavaScript中为图片元素绑定点击事件。

Android使用WebView实现图片点击的监听

话不多说,直接进入主题。

第一步

首先我们需要写一个监听事件的java类,如下:

	/**
     * 图片的点击事件调用的方法
     */
    class ImageInterface {
        @JavascriptInterface
        public void onImageClick(String imgUrl) {
            Toast.makeText(MainActivity.this, imgUrl, Toast.LENGTH_LONG).show();
        }
    }
第二步

这里需要对webview做一定的设置和处理:

private WebView mWebView;
private WebSettings mWebSettings;

mWebView = (WebView) findViewById(R.id.wv);
//获得webview的setting
mWebSettings = mWebView.getSettings();
//设置对js的支持
mWebSettings.setJavaScriptEnabled(true);
//加载webview的内容
mWebView.loadData(html+js,"text/html","utf-8");
//最关键的方法,添加一个js的接口,第一个参数为对象,第二个可以理解为对象的名字,后面在js中可以直接使用这个去调用方法
mWebView.addJavascriptInterface(new ImageInterface(), "wv");
第三步

要实现网页的内容能够被安卓监听到,那么我们要把第二步设置的接口在js里面表明:

private String js = "<style>img{max-width:100%;height:auto;} p{line-height:150%;}</style><script>var imgs=document.getElementsByTagName('img');for(var i=0;i<imgs.length;i++){imgs[i].onclick=function(){wv.onImageClick('click');alert('123');};}</script>";
    private String html = "<img src='http://resonlei.top/photo/c.jpg'></img>";

注意到上面的script里面,我获取了所有的img标签,并且为所有的img标签都设置了一个点击事件,

<script>
	var imgs=document.getElementsByTagName('img');
	for(var i=0;i<imgs.length;i++){
	
		imgs[i].onclick=function(){
			wv.onImageClick('click');//这里就是代码的关键,表示调用java代码的这个方法
		};
	}
</script>

结语

好了,一共就是三个简单的步骤,就可以实现对于webview内容的监听,其他的监听也可以通过类似的方法去实现,不再赘述。这种方法就跟java里面的回调机制是一个思路,只不过一部分编程了其他的内容,不要忘记在java的方法中添加@JavascriptInterface 标记哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值