2012-07-10 90 views
0

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

这是代码:

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


addView(web); 
+0

没有ü尝试缩小这样'webview.setInitialScale([规模])' – Hein 2012-07-10 07:25:03

+0

效果很好,但是我不会在全屏幕上显示图片,我想填充像ScaleType.fill_XY那样的屏幕。这个有可能? 。以及如何从SD卡加载这张照片?任何想法? – user1302569 2012-07-10 07:41:40

回答

1

这种方法webview.getSettings().setBuiltInZoomControls(true)会让你非multitletouch屏幕

您可以从任何地方的SD卡装入图像使用此代码的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,如果U尝试像1600x1840加载高分辨率图像的WebView,网页流量WILL降低图像清晰度保持内存使用情况,这导致难看的图像

+0

工作,但图片有白色边距。我想填充webview这个图像没有任何利润。 – user1302569 2012-07-10 08:25:50

+0

Pal,这是你的HTML问题。 没有冒犯,但我认为你应该谷歌关于那一个。 – Hein 2012-07-10 08:35:45

1

添加到您的HTML:

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

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

0

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

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

该解决方案完全适用于我:

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