2012-12-26 45 views
1

在我看來,android縮放位圖和dpi分辨率的方式是不正確的。正確的縮放方式ImageView

例如我有一個320x533圖像,即意在覆蓋整個屏幕區域,被定義爲這樣:

<ImageView 
    android:src="@drawable/background" 
    android:layout_width="320dp" 
    android:layout_height="533dp" /> 

在HDPI(240或1.5)中的圖像正確地縮放以480x800的 。但是在xhdpi(320或2.0)不行!這就是圖像變得640x1066但實際手機領域可能是720x12801080×1920或其他類似決議。

我試圖調整ImageView.scaleType(每個選項),但仍然無法正確縮放圖像。你認爲怎樣處理這個問題是正確的?我應該繼承ImageView的子類並使用Java處理縮放,還是缺少一些基本的東西?

回答

2

「我應該子類的ImageView和處理與Java縮放」 NO

你可以得到的DPI值,你可以得到的分辨率值了。比你可以計算所需的像素數量。

選項2是:使用基於android dpi的不同目錄。 (不僅可繪製,谷歌搜索會告訴你究竟如何)

+0

但問題是,android總是在xhdpi * 2.0縮放,而實際比例是不同的。 720px/320px = 2.25和1080px/320px = 3.375。您建議我爲每種不同的分辨率製作不同的預縮放圖像? – Dimitris

+0

android:layout_width =「320dp」 android:layout_height =「533dp」可以被代碼覆蓋。剛剛告訴上面如何繼續:http://developer.android.com/guide/practices/screens_support.html和http://developer.android.com/training/multiscreen/screendensities.html – 2012-12-26 12:40:15

+0

嗯,我已經讀過這些。他們沒有提供我的問題的答案。從第一個鏈接有2個建議。 1)爲不同的屏幕尺寸(/ res/layout-xyz)提供不同的佈局。 2)爲不同的屏幕密度(/ res/drawable-xyz)提供不同的位圖可繪製。我可以使用(1)和調整佈局xml爲不同的大小,但這是很多工作和一種愚蠢的IMO。我需要的是根據實際屏幕分辨率動態評估比例,而不是預定義的值。 – Dimitris