本文最后更新于:1 个月前

在开发过程中,一般使用 xml 进行界面布局的绘制,在设置界面布局宽高方面,Android 提供了多种计量单位(px、dp/dip、sp、dpi等)。

单位详解

  • px
    像素(Pixels),构成图像的最小单位。

  • dp/dip
    Density Independent Pixels,密度无关像素。

  • sp
    Scale-Independent Pixels,可以根据文字大小首选项进行缩放,常用于设置字体大小。

  • dpi
    Dots Per Inch,屏幕像素密度,即每英寸上的像素点数。

dp、px 转换

Java 版

public static int dip2px(Context context, float dipValue){
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int)(dipValue * scale + 0.5f);
}

public static int px2dip(Context context, float pxValue){
    final float scale = context.getResource().getDisplayMetrics().density;
    return (int)(pxValue / scale + 0.5f);
}

Kotlin 版

fun dp2px(dp: Float): Int {
    val scale = GifFun.getContext().resources.displayMetrics.density
    return (dp * scale + 0.5f).toInt()
}

/**
 * 根据手机的分辨率将px转成dp
 */
fun px2dp(px: Float): Int {
    val scale = GifFun.getContext().resources.displayMetrics.density
    return (px / scale + 0.5f).toInt()
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Notification 上一篇
Plan 下一篇