Android開發(fā)中缘圈,經(jīng)常要使用dp做為度量單位,為什么不直接使用px呢袜蚕?
首先要了解幾個基本概念
Screen Size
: 屏幕尺寸糟把,根據(jù)對角線度量,一般單位是英寸
英寸
: 1英寸=2.54厘米
px
: 像素廷没,屏幕顯示的內(nèi)容是由一個個點(diǎn)組成的糊饱,每一個點(diǎn)就是一個像素
Screen density
: 屏幕密度,度量屏幕上一塊物理區(qū)域中像素的個數(shù)多少颠黎,通常用dpi(dot per inch)作為單位另锋,這里的點(diǎn)指像素∠凉椋可以看出夭坪,像素的絕對大小是不定的,密度越高过椎,每一像素所占的面積就越小室梅。
Resolution
: 分辨率,通常所說的1080p疚宇,800X400指的就是分辨率亡鼠,這里的數(shù)字指的是每個dimension上像素的個數(shù)。
了解了以上知識敷待,就可以解釋dp這個概念了间涵。
dp是density-independnt pixel的縮寫。字面上解釋就是與像素密度(就是前面的Screen density)無關(guān)榜揖。
那么什么是與像素密度無關(guān)呢勾哩,為什么要用dp抗蠢,而不直接使用px呢?
假如有這種情況思劳,一個icon是50X50px迅矛,一塊4英寸大的屏幕,分辨率為100X100px潜叛,那么秽褒,這個icon將占屏幕的1/4,如果分辨率為200X200威兜,則占1/16. 可見震嫉,一塊4英寸的屏幕,只因屏幕密度的不同牡属,最終顯示效果差距很大。這樣會給用戶體驗帶來很大的負(fù)效應(yīng)扼睬。
如果icon的大小(指以像素為單位)能隨著屏幕密度的變化自動調(diào)整逮栅,不就好了么?屏幕密度變大窗宇,icon也跟著變大措伐。
這就是dp的作用。
因為icon最終要繪制到屏幕上军俊,所以最終還是以px為度量單位侥加,只是在此之前需要一個轉(zhuǎn)化過程
px = dp * (dpi / 160)
可見,當(dāng)dpi變大時粪躬,px可同比例變大担败。至于為什么是160,只是選的一個基準(zhǔn)镰官,在dpi=160的情況下提前,dp的大小是和px等同的。