2012-06-08 26 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