在 Android 中月趟,dp (density-independent pixel) 是一種與屏幕密度無關(guān)的長度單位灯蝴,而 px (pixel) 是屏幕上的實際像素。為了在不同的設(shè)備上實現(xiàn)相同的視覺效果孝宗,Android 提供了 dp 和 px 之間的轉(zhuǎn)換穷躁。
Android 中的屏幕密度通常分為四種:ldpi (low density), mdpi (medium density), hdpi (high density), 和 xhdpi (extra-high density)。這些密度可以通過 getResources().getDisplayMetrics().density 獲取因妇。
在 Android 中问潭,dp 與 px 的轉(zhuǎn)換公式如下:
px = dp * (dpi / 160)
其中,dpi 表示設(shè)備的屏幕密度婚被,160 是一個常數(shù)狡忙,代表標(biāo)準(zhǔn)屏幕密度 (即 mdpi)。例如址芯,在一個 hdpi 屏幕上灾茁,1 dp 的長度等于 1.5 px。
在代碼中谷炸,可以使用以下方法將 dp 轉(zhuǎn)換為 px:
public static int dpToPx(Context context, int dp) {
float density = context.getResources().getDisplayMetrics().density;
return Math.round(dp * density);
}
類似地北专,可以使用以下方法將 px 轉(zhuǎn)換為 dp:
public static int pxToDp(Context context, int px) {
float density = context.getResources().getDisplayMetrics().density;
return Math.round(px / density);
}
這兩個方法都需要一個 Context 參數(shù),因為需要獲取設(shè)備的屏幕密度信息旬陡。