Android点击WebView中的图片查看大图

WebView加载Html文本加载图片并同时实现获取图片下标

首先加载html文本

 web_view.loadDataWithBaseURL(null, Content, "text/html", "UTF-8", null);/*** 获取HTML文件里面的IMG标签的SRC地址** @param htmlText 带html格式的文本* @return 图片集合*/public static List<String> GetHtmlImageSrcList(String htmlText){List<String> imgSrc = new ArrayList<String>();Matcher m = Pattern.compile("src=\"?(.*?)(\"|>|\\s+)").matcher(htmlText);while(m.find()){imgSrc.add(m.group(1));}return imgSrc;}

创建JavascriptInterface。JavascriptInterface是Google官方为我们提供的Javascript与Native通信的解决方案。这里创建一个类,名称为JavascriptInterface(可自定义),为其添加一个方法startPhotoActivity(),该方法接收图片地址,启动PhotoActivity显示大图。

public class JavascriptInterface {  @android.webkit.JavascriptInterface  public void startPhotoActivity(String imageUrl) {  String [] urls=new String[listImg.size()];//这里是因为该图片查看大图是需要传一个图片数组,如果该图片查看器是需要一个图片集合,则无需将集合添加到数组for (int i = 0; i < listImg.size(); i++){urls[i]=listImg.get(i);}for (int i = 0; i < listImg.size(); i++) {//根据imageUrl来获取图片的下标,这里是通过imageUrl来匹配集合中的地址!如果相同则该地址在集合的下标即为imageUrl的下标String url = listImg.get(i).toString();if (imageUrl.equals(url)) {Intent intent = new Intent(getActivity(),ImagePagerActivity.class);intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_URLS, urls);intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_INDEX, i);startActivity(intent);}}}
}mWebView.addJavascriptInterface(new JavascriptInterface(), "mainActivity");  

在assets中创建一个js.txt文本,实现JavaScript代码。我们需要编写一个函数,遍历所有的标签,为每个img对象添加onclick事件。当img执行onclick事件时,调用Java代码启动显示大图页面,并传递自身的src属性。

function()
{  // 获取"img"标签的对象的集合  var imgs = document.getElementsByTagName("img");  for(var i = 0; i < imgs.length; i++)  {  // 添加点击事件  imgs[i].onclick = function()  {  // "mainActivity"是在上面Java代码中创建的  mainActivity.startPhotoActivity(this.src);  }  }
}  

JavaScript准备好之后,我们需要在网页加载完毕后,将其注入到网页中。WebView在页面加载完成时,会回调onPageFinished()方法,在这里实现js代码的注入。注入js代码的方法是通过调用WebView.loadUrl(“javascript:xxxxxx”)。

mWebView.setWebViewClient(new WebViewClient() {  @Override  public void onPageFinished(WebView webView, String s) {  mWebView.loadUrl("javascript:(" + readJS() + ")()");  }
});private String readJS() {  try {  InputStream inStream = getAssets().open("js.txt");  ByteArrayOutputStream outStream = new ByteArrayOutputStream();  byte[] bytes = new byte[1024];  int len = 0;  while ((len = inStream.read(bytes)) > 0) {  outStream.write(bytes, 0, len);  }  return outStream.toString();  } catch (IOException e) {  e.printStackTrace();  }  return null;  }    

参考来源:
http://blog.csdn.net/ruancoder/article/details/53958773

Android点击WebView中的图片查看大图相关推荐

  1. webview中的图片相应事件相应 坑

    需求: 点击webview中的图片相应事件,点击里面按钮相应事件.网页源代码中没有提供响应的javascript的方法,所以需要重新写方法 来响应时间 ,实现android和html代码互调 代码 红 ...

  2. Android实战场景 - 保存WebView中的图片到相册

    去年同事写了一个 "在H5中保存图片到相册" 的功能,虽然有大致实现思路,实现起来也没问题,但是感觉同事考虑问题的很周全,当时候就想着去学习一下,但是项目太赶没顾得上,索性现在有时 ...

  3. 基于JavaScript实现移动端点击图片查看大图点击大图隐藏

    今天找到了一个我用了很好的方法,点击缩略图,放大居中展示,且参数可调,亲测可靠. 代码使用意见,将下面的代码放到本地测试效果,可以用一张自己的照片,点击会放大,再次点击还原. 一.需求  点击图片查看 ...

  4. html点击小图标显示全屏查看大图,基于JavaScript实现移动端点击图片查看大图点击大图隐藏...

    一.需求 点击图片查看大图,再点大图隐藏.多用于移动端,因为移动端屏幕小,可能需要查看大图. 二.代码 JQuery点击图片查看大图by starof .exampleImg { height:100 ...

  5. php图片点击查看大图,基于JavaScript实现移动端点击图片查看大图点击大图隐藏_javascript技巧...

    一.需求 点击图片查看大图,再点大图隐藏.多用于移动端,因为移动端屏幕小,可能需要查看大图. 二.代码 JQuery点击图片查看大图by starof 三.技巧 因为移动端无法添加热点,最终一个解决方 ...

  6. Android在WebView中给图片设置点击事件

    好久没有更新博客了,今天来个小知识点.我们知道在WebView中加载的是Html也面,在开发中都是Web前端人员写好以后给个链接我们去用webView进行loadUrl.但是有时突然产品想让你把加载回 ...

  7. android webview 获取图片,Android – 保存WebView中的图片

    前言 项目中有需求在APP的Webview中长按图片可以保存.后来就去研究一下该怎么实现,顺便整理了一下. WebView基本配置 mWvContent.getSettings().setJavaSc ...

  8. iOS UILabel加载html点击图片查看大图 附demo

    我们在有些时候,因为性能和加载时间的问题,需要用UILabel加载html的方式来代替webview. 大部分情况,UILabel都可以很好的展示出想要的效果,但是却不能满足点击查看大图的需求. 本解 ...

  9. android 抓取webview中的所有图片_如何一键提取PDF文档中的所有图片?

    原标题:如何一键提取PDF文档中的所有图片? 目前PDF文档被大家广泛应用,主要是因为PDF文档在传输和转换的过程中比较稳定,所以PDF格式几乎是办公文件格式的首选.大家都知道PDF文档转换格式以及编 ...

最新文章

  1. mysql 从零开始_MySQL从零开始:01 数据库简介
  2. 洛谷 P2519 [HAOI2011]problem a
  3. Atitit it软件领域职称评级规定,广博方向。 目录 1. 软件工程师资格证 1 1.1. 法规规范 十大标准,三级五晋制。 1 1.2. 组织架构 域职称评级委员会 2 1.3. 人员职责流程表
  4. android textwatcher 获取当前控件,android api解析之TextWatcher
  5. putty远程linux系统时间修改,使用putty远程linux服务
  6. 【考研日记1】:看到2016年数学考的如此之难后
  7. CTF知识总结--MISC
  8. 经纬度PLT文件格式说明
  9. Gmail终于对中文用户开放注册! update:2008.5.6
  10. 终极选择---老男孩教育
  11. Python统计字符串中出现次数最多的人名
  12. 微信公众号开发(一)服务器配置
  13. 【全角/半角是什么】关于全角和半角的区别和使用
  14. XCODE - Failed to create provisioning profile
  15. 物联网平台thingsboard在Windows上的安装和部署
  16. Linux桌面对应的路径
  17. C语言第十一章课后程序设计题
  18. MOS管符号识别MOS管不同功能MOS管与寄生电容
  19. JVM(Java虚拟机模型、Java运行时数据区模型)
  20. SATA硬盘和IDE硬盘的区别

热门文章

  1. (四十三):Comprehensive Linguistic-Visual Composition Network for Image Retrieval
  2. 切绳子(二分,c语言)
  3. 中国外交部和中国驻英国使、领馆联系办法
  4. ECharts圆环图
  5. 分布式 PostgreSQL 集群(Citus),官方快速入门教程
  6. Apple Pay入华一年:称雄美国在华败北
  7. 微信小程序组件化开发框架wepy 学习(二)
  8. Google Maps基础及实例解析
  9. 利用清华镜像快速安装Python第三方库
  10. TINA-TI安装教程