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套不同分辨率的布局文件
三、總結:
在實際開發中,大多數還是用px作為基本單位,2套布局,1套高清資源。因為盡管各個廠家設備密度怎么變化,px永遠是基本單位,并且增加一套布局并不是多么困難的事情。
在開發apk時,只要多增加1套px為單位的布局,讓apk根據設備分辨率自動選擇布局文件。當然用dp 2套布局也許可行,但大多數設備時并不是真正的720p或1080p,dp只是和px的一個比值,計算時肯定會有誤差。2者對比,效果差距還是會有的。
dp和px兩者都有優勢劣勢,px當有多少個分辨率時,就要有幾套布局。相對較穩定,效果好。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!