这篇文章将为大家详细讲解有关在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实现点击图片放大功能