在Android项目使用WebView实现点击图片放大功能

  介绍

这篇文章将为大家详细讲解有关在Android项目使用WebView实现点击图片放大功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>图示:

在Android项目使用WebView实现点击图片放大功能


加载网页后如何捕捉网页中的图片点击事件;

获取点击的图片资源后进行图片显示,获取整个页面所有的图片;

支持查看上下一张的图片以及对图片缩放显示;

对图片进行保存;

其他:图片缓存的处理(不用每次都重新加载已查看过的图片)

在Android项目使用WebView实现点击图片放大功能

前期准备(添加权限,依赖和混淆设置):

<强>添加权限:

 & lt; uses-permission android: name=癮ndroid.permission.INTERNET"/比;
  & lt; uses-permission android: name=癮ndroid.permission.WRITE_EXTERNAL_STORAGE"/比;
  & lt; uses-permission android: name=癮ndroid.permission.MOUNT_UNMOUNT_FILESYSTEMS"/祝辞

<强>添加依赖:

编译& # 39;com.bm.photoview:库:1.4.1 # 39;
  编译& # 39;com.github.bumptech.glide:滑翔:3.7.0& # 39;
  编译& # 39;com.android.support: support-v4:25.0.0& # 39; 

<强>混淆文件设置:

小
  小公众enum com.bumptech.glide.load.resource.bitmap。ImageHeaderParser $ * * {
  * *[]美元值;
  公共*;
  }

MainActivity很简单,代码如下:

@Override   公共空间>公共类MyWebViewClient延伸WebViewClient {   @Override   公共空间>公共类MJavascriptInterface {   私人上下文语境;   私人String [] imageUrls;   公共MJavascriptInterface(上下文语境,String [] imageUrls) {   这一点。上下文=上下文;   这一点。imageUrls=imageUrls;   }   @android.webkit.JavascriptInterface   公共空间openImage(字符串img) {   目的意图=new意图();   intent.putExtra (“imageUrls" imageUrls);   intent.putExtra (“curImageUrl", img);   意图。setClass(上下文,PhotoBrowserActivity.class);   context.startActivity(意图);   }   }

可以看的到,openImage (url)方法实现的逻辑是:通过传递当前图片的url与该WebView整个页面的图片列表(imageUrls)进行跳转至PhotoBrowserActivity中.PhotoBrowserActivity就是用来显示大图的图片列表的页面。

此处的疑问:imageUrls怎么获得呢?

方式:1。服务器端直接将WebView中所有的图片按照顺序组合成字符串数组传递过来;2。或者直接将所有含img标签的html代码传递过来,从而让客户端自己解析出所有图片地址组合成的字符串数组。(此处是采用的第二种,具体如何解析,可以下载源码查看。)

好的,到了这里算是完成了项目知识点的第1点:1。加载网页后如何捕捉网页中的图片点击事件;

接下来就说明后面的几点:

2。获取点击的图片资源后进行图片显示,获取整个页面所有的图片;

3。支持查看上下一张的图片以及对图片缩放显示;

4。对图片进行保存;

其他所有的几点实现均在PhotoBrowserActivity中,代码如下:主要就是将图片放进:viewpage中进行显示:

 mPager=(: viewpage) findViewById (R.id.pager);
  .getDisplayMetrics mPager.setPageMargin ((int) (getresource () () .density * 15));
  mPager。setAdapter(新PagerAdapter () {
  @Override
  公共int getCount () {
  返回imageUrls.length;
  }
  @Override
  公共布尔isViewFromObject(视图视图对象对象){
  返回查看==对象;
  }
  @Override
  公共对象instantiateItem (ViewGroup容器,最后int位置){
  如果(imageUrls(位置)!=零,,!““.equals (imageUrls[位置])){
  最后PhotoView视图=new PhotoView (PhotoBrowserActivity.this);
  view.enable ();
  view.setScaleType (ImageView.ScaleType.FIT_CENTER);
  Glide.with (PhotoBrowserActivity.this) .load (imageUrls[位置]).override(目标。.crossFade SIZE_ORIGINAL Target.SIZE_ORIGINAL) .fitCenter () ()。侦听器(新RequestListener<字符串,GlideDrawable> () {
  @Override
  公共布尔>如果(imageUrls(位置)!=零,,!““.equals (imageUrls[位置])){
  最后PhotoView视图=new PhotoView (PhotoBrowserActivity.this);
  view.enable ();
  view.setScaleType (ImageView.ScaleType.FIT_CENTER);
  Glide.with (PhotoBrowserActivity.this) .load (imageUrls[位置]).override(目标。.crossFade SIZE_ORIGINAL Target.SIZE_ORIGINAL) .fitCenter () ()。侦听器(新RequestListener

在Android项目使用WebView实现点击图片放大功能