2011-08-13 165 views
6

人們會說,如果銀河標籤屏幕分辨率(肖像模式)是600px和屏幕寬度是3.55inch,屏幕密度將是600/3.55 = 169 dpi。知道並牢記設備無關的像素(DP)被計算的方式(http://developer.android.com/guide/practices/screens_support.html):瞭解三星Galaxy Tab屏幕密度

px = dp * (dpi/160); 
600 = dp * (169/160); 
dip = 568 

所以繪製的568dp(設備無關的像素)的水平線寬度開始在位置0處的寬度必須完全匹配的屏幕。但是,如果您在設備上嘗試此操作,則會發現屏幕寬度爲400dp。我將再次使用相同的公式,但爲獲得DPI:

600 = 400 * (dpi/160); 
dpi = 240 

所以具有240dpi3.55inch屏幕寬度和600pixels,是否表示一個物理像素由多個「點」,否則參數對應於所述寬度爲852pixel (3.55*240)

我認爲dpi是指每英寸點數,即每英寸像素數。但是,這似乎不是真的...

後來補充:
這(http://developer.android.com/guide/topics/resources/more-resources.html#Dimension)說:

160dp始終是無論屏幕密度的一英寸

哪是不正確的。即使後來 Difference between android dimension: pt and dp

新增:只要檢查從這個測量源
我問的原因是違反規則160dp = 1inch導致一個事實,即指定控制寬度時,例如320dp它將包括對Galaxy Tab的更大的部分是真的有必要和更大然後你會從600x1024px屏幕上會發生什麼......

感謝澄清 BR 斯登

+0

我認爲您可能會將dpi與傾斜設備無關的像素混淆。 – Petrus

+0

嗨,你能更具體地說明我做錯了什麼嗎?我在哪裏犯了一個錯誤? – STeN

+0

我以前可能誤讀了你的帖子,但也許你想檢查。我認爲它可能不會返回您計算所期望的密度。我沒有檢查過你的數學,但是如果密度是160而不是169,那麼它們可能會合在一起? – Petrus

回答

8

的Galaxy Tab(7" )沒有按。「T報告其真正的密度要理解這個問題,閱讀下面的文章:

http://realmike.org/blog/2010/12/21/multiple-screen-sizes-with-processing-for-android/

顯然,這也是三星什麼時候發現他們做了銀河 Tab。 Galaxy Tab擁有7英寸,1024×600的170 dpi分辨率屏幕。但是, 選項卡不會將其密度報告爲「mdpi」,而會將其報告爲「hdpi」,因此佈局 與第二個屏幕截圖完全相同。如果他們使用「mdpi」, 圖標將是.28「寬,」hdpi「,他們是.42」寬 - 不是一個大的 交易,我必須承認,佈局看起來更漂亮。

該文章包含一些圖像,可以讓您瞭解問題。

+1

嗨,好文章,但我們應該如何正確指定小工具大小?似乎只有在器件報告真實密度的情況下才使用dp,而不是像Galaxy-Tab這樣的假密度正在做的事情...... – STeN

+0

您應該使用dp指定它。如果Galaxy Tab使用真實密度,Galaxy Tab會顯示比您的物體更大的尺寸,但是三星相信這會取得更好的效果。從這篇文章中的圖片來看,我同意三星!另外,請按照以下提示進行操作:http://developer.android.com/guide/practices/screens_support.html#screen-independence –

+0

好的,同意 - 無論如何,Android文檔錯誤地說** 160dp = 1英寸**。這真是令人誤解。而且,似乎dpi可能不是選擇可繪製源的最佳方式,因爲當使用pseduo-density(邏輯密度)時它不考慮屏幕大小 - 可能是Google未來可能會改變的東西...我是嘗試** DisplayMetrics **類 - 它會返回每英寸的確切物理像素(即169 dpi)以及邏輯密度。 – STeN