2014-09-03 52 views
1

我正在創建一個android應用程序,該應用程序應該在具有明顯不同的物理屏幕大小的多個不同設備上運行。 推薦的做法似乎是通過設備的dp寬度來區分屏幕尺寸,例如爲相應的設備創建「layout-w700dp」文件夾。替代使用dp-width作爲不同佈局的鑑別器?

我在Samsung Galaxy Note 2(5.5「)和Samsung Galaxy S4 mini(4.3」)上測試了我的應用程序。由於可用空間的原因,它們都以不同的方式顯示佈局,因此需要不同的佈局文件。

下面是問題:它們都報告640的dp寬度。Note有dp因數爲2,像素寬度爲1280,S4 mini的dp因數爲1.5,寬度爲960像素。我怎樣才能爲設備使用不同的佈局文件?在物理尺寸方面存在着相當大的差異,我非常誠實地想知道「設備無關」測量報告每個設備的寬度相同的原因。

是否有任何其他方式使用不同的設備佈局文件?

編輯:由於內部限制,我無法提供應用程序的圖像,但基本上我需要爲我的按鈕使用不同的背景,因爲「wrap_content」會考慮背景大小(以像素爲單位) ,由於密度較低,因此使它們在S4 mini上更大。如果我不這樣做,S4上的按鈕太大並且重疊。

在此先感謝!

+0

這個佈局顯示在兩個設備上有多大不同?你能提供截圖以及佈局xml嗎? – helleye 2014-09-03 08:51:32

+0

@helleye:我編輯了我的問題 – BoltzmannBrain 2014-09-03 08:58:14

回答

0

有無可置疑的物理尺寸相當巨大的差異,我 坦白地想由於這個原因,「設備無關」 測量報告爲每個設備

絕對是兩臺設備具有相同的寬度dp中的屏幕尺寸相同。如下所示:

1DP = 1px的在1.0密度屏幕,並在1.5密度屏幕

1DP = 1.5px,並在2.0密度屏幕

1DP = 2.0px。

所以注意有1280/2.0 = 640dp和mini有960/1.5 = 640 dp。但是你應該時刻記住,屏幕密度只是android工程師用來簡化開發人員任務的一個桶。也就是說,如果設備是180dpi,密度爲1.0,而220dpi的屏幕密度爲1.5 。

是否有任何其他方式使用不同的設備佈局文件?

這似乎是不可能的。最後,如果你想完全控制你的佈局,你可以試着用DisplayMetrics在java代碼中構建你的視圖(是的,這肯定不是一個好方法)。

+0

我知道匹配檢查出來,我只是感到驚訝的是,android-framework提供的密度值的唯一目的是適應不同的屏幕尺寸和分辨率,這是非特定的(例如,桶大小很大)。開發者是否真的應該以同樣的方式處理4.3「和5.5」的屏幕?我將通過指定dp中的所有內容並在兩個設備上使用相同的佈局來解決我的問題。將不再有視覺錯誤,但我也不能使用Note的備用房地產。 – BoltzmannBrain 2014-09-03 10:15:41

+2

實際上,我認爲工程師可能希望我們在這兩種設備中使用相同的佈局 – suitianshi 2014-09-03 10:22:01

相關問題