1. dp奕巍,px吟策,dpi,sp等概念
- 屏幕尺寸:就是我們平常講的手機屏幕大小的止,為屏幕的對角線長度檩坚,一般講的大小單位都是英寸。比如iPhone5S的屏幕尺寸是4英寸诅福。Samsung Note3是5.7英寸匾委。
- 像素(px):把屏幕放大,看到的那一個個小點或者小方塊就是像素了权谁。
- 分辨率:是指屏幕上垂直方向和水平方向上的像素個數(shù)。比如iPhone5S的分辨率是1136640憋沿;Samsung Note3的分辨率是19201080旺芽;
- dip:(dot per inch)就是每英寸的像素數(shù),也叫做屏幕密度辐啄。這個值越大采章,屏幕就越清晰。iPhone5S的dpi是326壶辜; Samsung Note3 的dpi是386;
- dp(dip):Density independent pixel的縮寫悯舟,指的是抽象意義上的像素,設(shè)備無關(guān)像素砸民,跟設(shè)備的屏幕密度有關(guān)系抵怎。
- sp:(Scale-independent Pixel)sp和dp很類似但唯一的區(qū)別是奋救,一般用于自定義文字尺寸大小(小反惕、正常尝艘、大、超大等等)姿染。
2.各單位之間的轉(zhuǎn)換
- 計算dpi
比如一個機器背亥,屏幕4寸,分辨率480X800悬赏,因為不知道邊長狡汉,肯定不能分開算,4是對角線長度闽颇,那直接用勾股定理算對角線像素盾戴,除以4,算出來大概是 dpi = 233 像素/英寸进萄,那么density就是 (233 px/inch)/(160 px/inch)=1.46 左右捻脖。順帶說下,android默認的只有3個dpi中鼠,low可婶、medium和high,對應(yīng) 120援雇、160矛渴、240,如果沒有特別設(shè)置惫搏,所有的dpi都會被算成這3個具温,其中的default就是160。 - 計算dp和px
dp與px的換算公式如下: dp = (dpi/(160像素/英寸)) px = density px筐赔。注意铣猩,這里都是帶單位的。px是單位茴丰,dp是單位达皿,density沒單位。假設(shè)dpi是240 像素/英寸贿肩,那么density就是1.5峦椰,dp=1.5px ,注意這是帶了單位的汰规,也就是設(shè)備無關(guān)像素 = density 像素汤功,那么轉(zhuǎn)換為數(shù)值計算的話,即dp= density * px溜哮。在160dpi的屏幕上滔金,1dip=1px色解。
3.為什么在布局時候最好用dp,不要用px?
是因為這個世界上存在著很多不同屏幕密度的手機鹦蠕,屏幕密度是什么冒签?就是dpi,就是單位長度里的像素數(shù)量钟病。想象一下萧恕,如果這些手機的尺寸一樣,屏幕密度相差很大肠阱,那么是不是說一個手機水平方向上像素很少票唆,另一個手機水平方向上像素很多?那我們畫同樣pix數(shù)量的時候屹徘,它顯示的長度不就會不一樣了走趋?比如下面圖中的兩個手機,同時設(shè)置2px長度的Button噪伊,在屏幕密度較高的手機里就會顯示的比較小簿煌。而同時設(shè)置的2dip長度的Button,在兩個手機上顯示的大小是一樣的鉴吹。