計算dpi
假設一個設備的屏幕爲4英寸,分辨率爲480*800,如何計算它的dpi?
因爲不知道邊長,肯定不能分開算,因爲4是對角線長度,所以先用勾股定理計算對角線像素,然後除以4,算出來大概是dpi=233像素/英寸、。
那麼density就是(233px/inch)/(160px/inch)=1.46
在Android中,標準dpi爲160,稱爲MDPI
計算dp與px
寫佈局的時候,我們用的尺寸單位通常是dp,那麼1個dp到底有多少px?他們之間的換算公式如下:
dp=(DPI/(160像素/英寸))px=density px
注意,這裏都是帶單位px是單位,dp是單位,density沒單位
例如,假設設備的dpi是240像素/英寸,那麼density就是240/160=1.5,因此在該設備上,1dp=1.5px。如果在佈局中定義了某個控件的寬度爲100dp,那麼在該設備中,控件的寬度應顯示爲1.5*100=150px
爲什麼標準dpi定位160?
Android Design裏把主流設備的dpi歸成了四個檔次,120dpi,160dpi,240dpi,320dpi,分別稱爲LDPI,MDPI,HDPI,XHDPI,現在還有XXHDPI(480dpi),xxxHDPI(640dpi).
爲什麼在佈局的時候最好用dp,不用px?
因爲實際中存在很多不同屏幕密度(dpi)的手機,想象一下,如果這些手機的尺寸一樣,屏幕的密度相差很大,也就是說一個手機水平方向上像素較少,另一個手機水平方向上像素較多。那麼我們畫同樣px數量的時候,它在不同dpi的手機上顯示的長度就會不一樣。