Android WebView 图片超出宽度自适应,点击查看大图

 

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;
        }
        
        //点击图片回调方法
        //必须添加注解,否则无法响应
        @JavascriptInterface
        public 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()
        {
            
            @Override
            public void onPageFinished(WebView view, String url)
            {
                super.onPageFinished(view, url);
                /**
                 * 对图片进行重置大小,宽度就是手机屏幕宽度,高度根据宽度比便自动缩放
                 **/
                
                webView.loadUrl("javascript:(function(){"
                        + "var objs = document.getElementsByTagName('img'); "
                        + "for(var i=0;i
        //AndroidtoJS类对象映射到js的openImage对象 YourActivity 也就是当前的activity
        webView.addJavascriptInterface(new ImgTool.JavaScriptInterface(YourActivity.this), "imagelistner");
        
        webView.loadUrl(url);

 

你可能感兴趣的:(android开发)