2012-06-13 80 views
1

我需要能夠顯示具有縮放和滾動功能的圖像。由於ImageView看起來有點乏味,我使用加載本地圖像並顯示它的WebView來完成它。這是我當前的代碼:試圖讓Android WebView正確縮放

WebView image = (WebView)findViewById(R.id.image); 
    image.getSettings().setBuiltInZoomControls(true); 
    image.getSettings().setLoadWithOverviewMode(true); 
    image.getSettings().setUseWideViewPort(true); 
    image.setInitialScale(40); 
    image.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
    image.loadUrl("file:///android_asset/image.png"); 

雖然這種加載圖像,我不能讓它只顯示圖像。由於setUseWideViewPort(true)使得它可以完全按比例縮放寬度,所以它下面總是有相當數量的空白。

任何允許它只滾動加載的圖像的建議?謝謝。我也試過setDefaultZoom,不能讓它出去得足夠遠。

回答

1

我認爲在你的setInitialScale方法中使用靜態百分比40是正常的,但是,它並沒有考慮屏幕密度或每個說的大小。目前,你的40意味着你被縮放到實際尺寸的40%。

想想當你只在PC上的網絡瀏覽器中打開一個圖像時,這個圖像本質上會以同樣的方式迴應,並將其放在左上角。是的,您可以使用WebView對其進行縮放,但在這種情況下,爲了使其適用於所有平臺,您將必須根據屏幕分辨率減去任何邊界矩形(與Android相關的頂部和底部)相關來計算縮放因子到圖像的實際寬度和高度。

我建議你回到ImageView!

+0

不幸的是,我只是試了一下,我的圖片太大,無法放入內存。我不打算進入整個平鋪功能來顯示它。 這應該是更簡單。 – user1132897

+0

太大以適應內存?這甚至沒有任何意義,當你將它帶入WebView時,它也將整個圖像帶入內存,並且實際製作一個副本來顯示它,就像ImageView一樣。那麼你的意思是說它太大而不適合記憶? – trumpetlicks

+0

如果我沒有錯,我認爲當你將一個位圖加載到imageview中時,Android會以非壓縮格式保存它。我不認爲Webview會這樣做。這就是爲什麼它能夠適應WebView而不是ImageView。 – user1132897