?
webView?配置?
WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptCanOpenWindowsAutomatically(true);webSettings.setDomStorageEnabled(true);webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//自適應屏幕 ☆☆webSettings.setDisplayZoomControls(false);webSettings.setJavaScriptEnabled(true); // 設置支持javascript腳本 ☆☆webSettings.setAllowFileAccess(true); // 允許訪問文件webSettings.setBuiltInZoomControls(true); // 設置顯示縮放按鈕webSettings.setSupportZoom(true); // 支持縮放webSettings.setLoadWithOverviewMode(true);webSettings.setUseWideViewPort(true);
?Android處理事件(ImgTool.java)
public static class JavaScriptInterface {private Context context;public JavaScriptInterface(Context context) {this.context = context;}//點擊圖片回調方法//必須添加注解,否則無法響應@JavascriptInterfacepublic void openImage(String imgsrc) { Bitmap bitmap = null;try{bitmap = BitmapFactory.decodeStream(new URL(imgsrc).openStream());} catch (IOException e){e.printStackTrace();}Drawable drawable;if (bitmap != null){drawable = new BitmapDrawable(context.getResources(), bitmap);//彈出個全屏窗口打開圖片對象 自己寫就行了//ImgTool.ViewImg((Activity) context,drawable);}}}
重寫?onPageFinished?注入js
webView.setWebViewClient(new WebViewClient(){@Overridepublic void onPageFinished(WebView view, String url){super.onPageFinished(view, url);/*** 對圖片進行重置大小,寬度就是手機屏幕寬度,高度根據寬度比便自動縮放**/webView.loadUrl("javascript:(function(){"+ "var objs = document.getElementsByTagName('img'); "+ "for(var i=0;i<objs.length;i++) "+ "{"+ "var img = objs[i]; "+ " img.style.maxWidth = '100%'; img.style.height = 'auto'; "+ "}"+ "})()");// html加載完成之后,添加監聽圖片的點擊js函數webView.loadUrl("javascript:(function(){"+ "var objs = document.getElementsByTagName(\"img\"); "+ "for(var i=0;i<objs.length;i++) "+ "{"+ " objs[i].onclick=function() "+ " { "+ " window.imagelistner.openImage(this.src); "+ " } "+ "}"+ "})()");} });
//AndroidtoJS類對象映射到js的openImage對象 YourActivity 也就是當前的activitywebView.addJavascriptInterface(new ImgTool.JavaScriptInterface(YourActivity.this), "imagelistner");webView.loadUrl(url);
?