2012-06-08 43 views
2

我有一个应用程序,下载并显示来自URL的图像。这工作正常使用Android WebView或ImageView?

URLConnection conn = urls[i].openConnection(); 
conn.connect(); 
if(conn.getContentLength() > 0) 
is = conn.getInputStream(); 
bis = new BufferedInputStream(is); 
Bitmap temp = BitmapFactory.decodeStream(bis); 

我注意到,WebView的下载和显示图像比上述代码快得多,所以我想我会尝试。

String url = "http:\\image.jpg" 
int mWidth = getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth() 
webView.loadData("<html><body> <img src=\"" + url + "\" width=\"" + mWidth + "px\" height=\"auto\"></body></html>", "text/html", null); 

虽然这种获取图像更快它不缩放图像屏幕的大小,大的照片总是超越的WebView宽度,需要滚动查看正确。

有谁知道我可以如何解决这个问题,以在WebView中正确显示图像或如何加速图像下载的第一个地方?

我宁愿让下载速度加快,但如果我可以正确缩放图像,我很乐意使用WebView。

+0

你曾经对这些实现进行过压力性能测试吗?我想知道WebView的性能是否比ImageView差,因为它比组件稍重。 – MikeIsrael

回答

5

通过CSS将图像元素宽度设置为100%,高度应根据图像的宽高比进行缩放。

+0

谢谢你,谢谢。 – Ne0

0

我还没有尝试过。但从你的问题,我可以看到,你使用webview唯一的问题是屏幕尺寸适合的问题。为了克服这个问题,您可以简单地将初始缩放级别设置为1,并且图像应该适合屏幕内部。

试试这个,

 <WebView 
     android:id="@+id/webview" 
     android:layout_width="50dip" 
     android:layout_height="50dip"/> 

webView.setInitialScale(1); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setLoadWithOverviewMode(true); 
webView.getSettings().setUseWideViewPort(true); 
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
webView.setScrollbarFadingEnabled(false); 

注:我不知道,这到底会是有效的。我还没有尝试过。但是尝试一下是值得的。

+0

谢谢,虽然你是正确的图像确实会显示在屏幕上,它不会总是填满屏幕。当我测试它时,图像最终放在需要放大的左上角。使用我的HTML代码与'width =“100%”'它将始终填充浏览器窗口的宽度。 – Ne0