android屏幕顯示相關字段的理解

jopen 10年前發布 | 11K 次閱讀 Android Android開發 移動開發

多個設備屏幕,不同設備有不同的density,dpi會隨分辨率變化,dp比值也會變化。故網上大多數講情景都是設備dp/px=dpi/160相同的2個設備上運行時一致的。但當同一個apk在2個比值不相同的設備上運行時,效果肯定有很大差異的。

一、字段

1.density(密度):描述設備屏幕一個區域內占用多少像素,不同的設備有不同的密度

2.dpi:dots per inch ,來表示某一英寸內的像素點。一個設備可能支持多個分辨率,density是出廠時物理密度,和inch一樣是不變的,故dpi會根據像素變化

3.px(像素):屏幕基本單位

4.dp:Density-independent pixel根據設備的density的不同,計算后與px的比值為

px/dp=當前設備dpi/160

5.inch(英寸):屏幕對角線長度,1 inch = 2.54cm

6.resolution(分辨率):設備屏幕的總像素點


二、dp和px使用理解

網上看到大多數對dp理解文章,之前也非常篤信。后來實際開發中發現并不只如此。網上講的大多只是初步一半的解釋,仔細翻過api文檔中的朋友會發現:

Supporting Multiple Screens


支持多個設備屏幕,不同設備有不同的density,dpi會隨分辨率變化,dp比值也會變化。故網上大多數講情景都是設備dp/px=dpi/160相同的2個設備上運行時一致的。但當同一個apk在2個比值不相同的設備上運行時,效果肯定有很大差異的。


應用開發都希望用一個apk能在所有的設備上正常顯示,效果一致,不需要再做第2次無用開發。

相信實現過的人,都有不同的實現方式。

下面是作者基于同一個apk在不同設備上的情景分析。

1.在同一個設備上,可能支持不同分辨率,密度不變,dpi會變化:

dp作為單位:此時能自動適應當前設備不同分辨率,正常顯示。并且只需要一個布局文件即可。
px作為單位:需要2套不同分辨率的布局文件


2.不同設備上,不同分辨率,不同密度:


dp作為單位:此時不一定能自動適應設備不同分辨率,當設備的dpi與之前正常顯示的設備一直時,能正常顯示。否則,同樣需要2套dp的布局才能正常顯示,見下圖分析。



px作為單位:需要2套不同分辨率的布局文件


android屏幕顯示相關字段的理解


三、總結:

在實際開發中,大多數還是用px作為基本單位,2套布局,1套高清資源。因為盡管各個廠家設備密度怎么變化,px永遠是基本單位,并且增加一套布局并不是多么困難的事情。

在開發apk時,只要多增加1套px為單位的布局,讓apk根據設備分辨率自動選擇布局文件。當然用dp 2套布局也許可行,但大多數設備時并不是真正的720p或1080p,dp只是和px的一個比值,計算時肯定會有誤差。2者對比,效果差距還是會有的。
dp和px兩者都有優勢劣勢,px當有多少個分辨率時,就要有幾套布局。相對較穩定,效果好。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!