Android 利用JS 实现对网络图片添加点击事件 查看大图
来源:互联网 发布:喜欢男朋友的丁丁知乎 编辑:程序博客网 时间:2024/06/06 09:40
直接上代码好了,原理就是遍历h5标签,找到图片,给图片添加点击事件。。。。js代码中有个小坑就是涉及到了js的闭包问题,for循环取i。。。。
public class WebViewFragment extends Fragment implements MvpView { private WebView contentWebView = null; String content; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.content = this.getArguments().getString("CONTENT"); } public static WebViewFragment newInstance(String content) { WebViewFragment webViewFragment = new WebViewFragment(); Bundle bundle = new Bundle(); bundle.putString("CONTENT",content); webViewFragment.setArguments(bundle); return webViewFragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_webview,container,false); contentWebView = (WebView) view.findViewById(R.id.webview); contentWebView.getSettings().setJavaScriptEnabled(true); contentWebView.setWebViewClient(new MyWebViewClient()); contentWebView.addJavascriptInterface(new MJavascriptInterface(getActivity()), "imagelistener"); contentWebView.loadDataWithBaseURL(null,"<head><style>img{width:100% !important;}</style></head>"+content,"text/html","utf-8",null); return view; } @Override public void onDestroy() { super.onDestroy(); } @Override public void onShowProgress() { } @Override public void onHideProgress() { } @Override public void onError(String errorMsg) { }}
下面是两个核心类
public class MyWebViewClient extends WebViewClient{ @Override public void onPageFinished(WebView view, String url) { view.getSettings().setJavaScriptEnabled(true); super.onPageFinished(view, url); addImageClickListener(view);//待网页加载完全后设置图片点击的监听方法 } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { view.getSettings().setJavaScriptEnabled(true); super.onPageStarted(view, url, favicon); } private void addImageClickListener(WebView webView) { webView.loadUrl("javascript:(function(){ " + "var objs = document.getElementsByTagName(\"img\");" + " var array=new Array(); " + " for(var j=0;j<objs.length;j++){ " + "array[j]=objs[j].src;" + " } " + "for(var i=0;i<objs.length;i++){" +"objs[i].i=i;" + "objs[i].onclick=function(){ window.imagelistener.openImage(this.src,array,this.i);" + "} " + "} })()"); }}
package com.gogosu.gogosuandroid.ui.documents.tools;import android.content.Context;import android.content.Intent;import com.gogosu.gogosuandroid.model.Constant.IntentConstant;import com.gogosu.gogosuandroid.ui.util.MultiplePhotoViewActivity;import java.util.ArrayList;/** * Created by chengjia on 17-3-1. */public class MJavascriptInterface { private Context context; public MJavascriptInterface(Context context) { this.context = context; } @android.webkit.JavascriptInterface public void openImage(String img,String[] imageUrls,int position) { Intent mIntent = new Intent(context, MultiplePhotoViewActivity.class); ArrayList<String> strings=new ArrayList<>(); for(String s:imageUrls) { strings.add(s); } mIntent.putStringArrayListExtra(IntentConstant.MULTIPLE_PHOTO_URI,strings); mIntent.putExtra(IntentConstant.MULTIPLE_PHOTO_VIEW_PAGER_CURRENT_POSITION,position); context.startActivity(mIntent); }}
0 0
- Android 利用JS 实现对网络图片添加点击事件 查看大图
- js 图片 点击查看大图
- Android浏览图片,点击查看大图
- Android点击WebView中的图片查看大图
- 点击图片,查看大图
- Android 实现WebView点击图片查看大图列表及图片保存
- Android 实现WebView点击图片查看大图列表及图片保存
- WKWebview点击图片查看大图
- Android textView展示html图片,实现图文混排,点击查看大图片
- js实现移动端漂亮input框上传本地,图片显示缩略图,点击可以查看大图,再点击恢复
- 点击发送后图片查看大图的实现思路
- js实现查看大图
- android点击查看大图(长按保存图片)
- Android webview图片点击事件 查看图片
- Android点击缩略图查看大图
- Android 点击ImageView 查看大图
- Android dialog点击查看大图
- android 点击缩略图查看大图
- Redis redis.conf 重要选项配置
- 产品准备
- 顺时针打印矩阵
- Dubbo监控中心安装
- Linux命令(5)——shutdown命令
- Android 利用JS 实现对网络图片添加点击事件 查看大图
- android 微信支付问题总结
- darwin 架构
- Junit单元测试
- Android实战项目中常用依赖库整理
- 关于chrome浏览器插件的选择、安装、配置与使用的过程和结论
- 命令行启动mysql时显示“服务名无效”
- android 保留两位小数
- SpringMVC入门必读,最全最详细