先上乙個網上copy的
px:是螢幕的畫素點 in
:英吋
mm:公釐 pt
:磅,1/72 英吋
dp:乙個基於
density
的抽象單位,如果乙個
160dpi
的螢幕,
1dp=1px
dip:等同於dp
sp:同
dp相似,但還會根據使用者的字型大小偏好來縮放。
建議使用
sp作為文字的單位,其它用
dip
然後是我自己的理解:
android
的螢幕密度是以
160為基準的,
螢幕密度
(densitydpi)
為160時,
是將一英吋分為
160份
, 每乙份是1畫素
. 如果螢幕密度
(densitydpi)
為240時,
是將一英吋分為
240份
, 每乙份是1畫素
. 1英吋
/160(
機器x) = 1英吋
/240(
機器y) = 1px
打個比方
, 乙個三英吋的顯示螢幕的機器
, 如果螢幕密度
(densitydpi)
為160,
即密度比
(density)1.0時,
畫一條160dip
和160px
的線條,
兩個都是1英吋
. 可如果還是三英吋的螢幕
, 如果螢幕密度
(densitydpi)
變為320,
即密度比
(density)2.0時,1
英吋有320
畫素了,
此時160px
顯示就是半英吋
. 160dip
顯示還是1英吋
, 因為
1dip = 1px * density .
可是你有沒有注意到
, 同樣寬的螢幕
, 比如3英吋
, 如果
density
是1.0
的話,
解析度就是
480dip*x
或480px,*x
如果還是
3英吋的
, density
是1.5
的話,
解析度就是
480*1.5 = 720px*x
或480dip*x. (
這裡的x
代表螢幕的高度
). 如果同樣是
240dip,
在兩款機器上顯示都是一半的長度
, 這樣就保證了比例
. 這樣的話如果是
480解析度和
720解析度的話
,可以採用同乙個布局檔案了.
又但可是
, 我見過的機器只有
320*240(0.75) , 480*320(1.0) , 800*480(1.5), 854*480(1.5) ,
如果是480
和800
兩個版本
, 同一條線
480dip , 480
顯示全屏
, 800
則顯示480 / (800 / 1.5) 屏.
其中800/1.5
是螢幕的總
dip .
我們平時說的解析度都是以畫素
px為單位的
.
由此可見
, 就算是用
dip,
也不能保證不同解析度的機器的布局比例完全一樣
. 但還是有好處的
. 因為如果是用
px的話
, 有些時候一些布局直接跑到了螢幕外邊
, 除錯起來很麻煩.
還有, google
**裡邊所用的單位都是以
px為預設單位的.
apk的資源包中,當螢幕
density=240
時使用hdpi
標籤的資源
當螢幕density=160
時,使用
mdpi
標籤的資源
當螢幕density=120
時,使用
ldpi
標籤的資源。
在每英吋
160點的顯示器上,
1dp = 1px。
下面是幾種不同單位的相互轉換.
public
static
intdip2px(context context, float dipvalue)
public
static
intpx2dip(context context, float pxvalue)
public
static
intdip2px(context context, float dipvalue)
public
static
intpx2dip(context context, float pxvalue)
下面說下如何獲取解析度:
在乙個activity
的oncreate
方法中,寫入如下**:
displaymetrics metric = new displaymetrics();
getwindowmanager().getdefaultdisplay().getmetrics(metric);
int width = metric.widthpixels; //
螢幕寬度(畫素)
int height = metric.heightpixels; //
螢幕高度(畫素)
float density = metric.density; //
螢幕密度(
0.75 / 1.0 / 1.5
)int densitydpi = metric.densitydpi; //
螢幕密度
dpi(
120 / 160 / 240
)這還是挺簡單的, 可是你有沒有在800*480的機器上試過, 是不是得到的寬度是533 ? 因為android剛開始時預設的density是1.0 , 此時你可以再manifest.xml中加入
1.uses-sdk節點, , 表示不sdk1.6以下的機器不能安裝你的apk了.
2.supports-screens 節點.
android:smallscreens="true"
android:normalscreens="true"
android:largescreens="true"
android:resizeable="true"
android:anydensity="true" />
Android 中的長度單位 px dp sp
一 介紹一下px 但如果使用 px 作單位,如果螢幕大小不變 假設還是3.2 寸 而螢幕密度變成了320。那麼原來 textview 的寬度設成160px,在密度為320 的3.2 寸螢幕裡看要比在密度為160 的3.2 寸螢幕上看短了一半。二 介紹一下 dp 和 sp。dp 也就是 dip。這個和...
android中的畫素單位dp px pt sp
看到有很多不太理解dp sp和px的區別 現在這裡介紹一下dp和sp。dp也就是dip。這個和sp基本類似。如果設定表示長度 高度等屬性時可以使用dp 或sp。但如果設定字型,需要使用sp。dp是與密度無關,sp除了與密度無關外,還與scale無關。如果螢幕密度為160,這時dp和sp和px是一樣的...
關於android中的單位(dp sp)
android讓人頭疼的適配問題。經常使用的dip sp。有時候用到px。sp和dip同樣。僅僅是sp除了會隨著裝置的不同而不同外,還受使用者設定的影響 一般路徑是在 設定 外觀 字型大小 並且,讓人憤憤的是,在 sony xperia c3 上 不知道是否全部 xperia 中都是這樣 系統預設的...