首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android px 與 dp 互轉工具類:基於 DisplayMetrics.density

     編輯:程式設計綜合問答

核心公式

  • px = dp * density
  • dp = px / density
  • density = dpi / 160 (如 mdpi=1.0, hdpi=1.5, xhdpi=2.0, xxhdpi=3.0, xxxhdpi=4.0)

工具類實現

public class DensityUtils {
    private DensityUtils() {}

    public static int dp2px(Context context, float dp) {
        return (int) (dp * context.getResources().getDisplayMetrics().density + 0.5f);
    }

    public static int px2dp(Context context, float px) {
        return (int) (px / context.getResources().getDisplayMetrics().density + 0.5f);
    }

    public static int sp2px(Context context, float sp) {
        return (int) (sp * context.getResources().getDisplayMetrics().scaledDensity + 0.5f);
    }
}

使用示例

int marginPx = DensityUtils.dp2px(this, 16); // 16dp 轉像素
int textSp = DensityUtils.px2sp(this, 24);   // 像素轉 sp

注意

  • 傳入 Context 獲取 DisplayMetrics,避免靜態初始化時未附加上下文。
  • +0.5f 實現四捨五入。
  • XML 中直接用 16dp、14sp,系統自動換算,無需手動轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved