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

来源:互联网 发布:短信端口号查询 编辑:程序博客网 时间:2024/05/18 00:20

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的settingmWebSettings = 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 标记哦!

阅读全文
0 0