WebView和缩放图像

时间:2012-07-10 07:20:11

标签: android webview

我在代码中创建webview。在这个webview中我展示了图片。现在我有两个问题。如何以完整尺寸显示图像,因为我的图片的分辨率为1381x1829,我只看到这张图片的一部分。第二。正如您在代码中看到的,我从资源加载图片,但我想从SD卡加载图片。我怎么能这样做?

这是代码:

    WebView web = new WebView(getContext());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setBuiltInZoomControls(true);
web.loadUrl("file:///android_asset/lj.png");


addView(web);

4 个答案:

答案 0 :(得分:3)

这个解决方案非常适合我:

webView.setInitialScale(30);
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);

答案 1 :(得分:1)

此方法webview.getSettings().setBuiltInZoomControls(true)将允许您为非多重触控屏幕实现内置缩放控制

您可以使用此代码从sdcard到webview的任何位置加载图像。 也就是说,如果你想从多个位置加载多个图像。

String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/Your/Folder";
String imagePath = "file:/"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");

但是如果你想在同一个父文件夹下加载图片,那么这就可以了。

String imagePath = "test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadDataWithBaseURL("file:///mnt/sdcard/Your/Folder/", html, "text/html","utf-8",null);

BE WARN,如果您尝试将像1600x1840这样的高分辨率图像加载到webview,webview将减少图像res以维持内存使用量,从而导致BAD看图像

答案 2 :(得分:1)

将此添加到您的HTML:

<style type='text/css'>
   img {max-width: 100%;height:initial;} div,p,span,a {max-width: 100%;}
   </style>

这将使您的图像缩放以适应屏幕尺寸。

答案 3 :(得分:0)

删除默认填充 - 不要忘记设置样式:

<html><head></head><body style="padding:0; margin:0;"><img src=""+ gifUrl + ""
width="100%"></body></html>