2012-12-25 86 views
7

我正在開發Android Widget,需要區分Galaxy SGalaxy S2。 我幾乎讀了關於屏幕尺寸和密度文章的一切。 我當然需要使用新的限定符和新的限定符最小寬度。 我的問題是,sw320dp限定符匹配Galaxy S和Galaxy S2。 但我需要Galaxy S2的另一種佈局,但無法找到正確的限定符。Galaxy S和Galaxy S2的最小寬度

銀河S,密度233

屏幕尺寸中的像素的定義:480像素x 800像素以dp

屏幕尺寸:329dp X 549dp(原因1DP = 1像素/(密度/ 160)

- >所以預選賽sw320dp必須在這裏匹配,並且是它

銀河S II,密度218

屏幕尺寸中的像素的定義:480像素x 800像素以dp

屏幕尺寸:352dp X 587dp(原因1DP = 1像素/(密度/ 160)

- >所以預選賽sw340dp在這裏必須匹配,但NO它不

(泰斯特d在模擬器和真實設備上)

drawables不是問題,但我的佈局,特別是高度和文本大小在這些設備上是不同的,所以我真的需要一個特定的佈局。

任何人有想法或更多的經驗嗎?

+1

AFAIK,框架不使用實際的密度,但「四捨五入」到最近的120,160,240,320像素,對應於低,中,高和X高。所以你的設備都會報告sw = 320。這可能會導致不規則的結果 - 我也有這個在Galaxy設備上的問題 – CjS

+0

是的,這是令人興奮的我的經驗,以及....但即使在模擬器,我們不能做真正的設備設置? – user1013443

+1

這與模擬器沒有任何關係。這是該框架的一個特點。您在實際設備 – CjS

回答

5

屏幕密度,如由參考材料限定爲:

屏幕的物理區域內的像素的數量;通常稱爲dpi(每英寸點數)。例如,與「正常」或「高」密度屏幕相比,「低」密度屏幕在給定物理區域內具有更少的像素。 爲了簡單起見,Android將所有實際屏幕密度分爲四種廣義密度:低,中,高和超高。

低= 120DPI 值= 160dpi 高= 240dpi XHI = 320dpi

所以銀河SII,用218真密度,被分配的240 以dp 「高」 密度計算。因此dp屏幕的寬度爲480/240 * 160 = 320。

這很糟糕,我同意。但它是如何工作的。

http://developer.android.com/guide/practices/screens_support.html

+0

我的理解已經是什麼Android ...但 以及...事實是,我無法模仿一個​​真正的三星Galaxy SII或SIII,最常用的Android手機......這很糟糕,真是令我驚訝.. – user1013443

+1

我想什麼你錯過的是即使是真正的Galaxy SII也會有320dp的sw,而不是340.所以你正在模擬真實的設備 – CjS

+0

事實是:模擬一個真實的設備是不可能的。只有當設備的密集度與low,med,high或xdpi中的任何一個完全匹配時。 或者如何設置Galaxay手機的模擬器?我嘗試了一切。真正的設備看起來非常不同。 – user1013443