2012-09-06 41 views
4

如何將不同的資源用於具有相同sw800dp最小寬度的ICS上的不同DPI?android佈局最小寬度(sw800dp)和不同密度

詳細信息:有兩個ICS 4.0.4平板電腦。首先有1280x800分辨率和mdpi(160)密度。第二個具有1920x1200分辨率和hdpi(240)密度。因此,就最小寬度而言,它們都具有相同的sw800dp限定符,但具有不同的mdpi/hdpi密度限定符。

我需要爲這兩個分辨率有不同的佈局和圖像。

因此,我創建兩個目錄:

佈局sw800dp-MDPI

佈局sw800dp - 華電國際

我認爲,每個設備將按照最小的選擇自己的目錄寬度和密度。 但他們兩個都從同一個sw800dp-hdpi文件夾獲取資源!

我很困惑,不知道如何分離兩種不同分辨率的資源。

任何幫助真的很感激。 在此先感謝。

+0

我有與drawables相同的問題。 mdpi設備從drawable獲取資源 - sw720dp-xhdpi – arjoan

+0

Mark Murphy在Google bug追蹤器中註冊了一個關於這種情況的bug,但沒有任何goo-guys的反應。這裏是鏈接:http://code.google.com/p/android/issues/detail?id=37187 –

+0

@NorthernCaptain我陷入了同樣的問題,你有沒有得到任何解決方案? –

回答

1

使用此獲得密度:

float density = getBaseContext().getResources().getDisplayMetrics().density; 

屏幕高度:

int h = 0; 

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 

h = (int) display.getHeight(); 

屏幕寬度:

int w = 0; 

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 

w = (int) display.getWidth() 

之後,只要選擇正確的資源。

+0

謝謝,我知道如何以編程方式獲得顯示配置,但是如何更改佈局加載行爲? Android在我調用setContentView時自己完成。 –

1

您應該使用相同的佈局,位於/ layout/sw800dp,並創建/ drawable-mdpi,/ drawable-hdpi來放置您的自定義drawable,系統會將正確的佈局應用於每個設備,使用相同的佈局。這些設備應該具有相似的尺寸和外觀...