Android Studio - 屏幕显示 - 像素单位:px、dp、sp

    技术2023-12-25  94

    本文最后修改于 2020 年 9 月 19 日

    单位:px、dp、sp

     

    px 像素

     

    dp 安卓中的相对大小

    又称 dip,Device Independent Pixels(设备独立像素)。

    与屏幕尺寸有关。一般来说,同样尺寸的屏幕以 dp 计量的分辨率是一样的,如一般手机屏幕分辨率会设置成 360 dp。可以在开发者选项中手动更改 dp 。  

    sp 用于设置字体

    sp 原理与 dp 差不多,是专门用于设置字体大小的。手机设置中可以调整字体大小。以 sp 为单位,更改设置中字体大小,并不会改变 dp 的显示。

    Google 推荐使用 sp 设置字体大小并且大于等于 12 sp。

    阿里巴巴安卓开发手册推荐字体大小单位设置为 dp,解释为可以更好的还原 UI 设计,不过我觉得还是 sp 更好。  

    说明

      在 XML 布局文件中,为了让不同设备屏幕拥有统一的显示效果,除了 sp 用于设置文字大小外,其余要用尺寸大小的地方几乎都用 dp。在代码中情况又有所不同,Android 用于设置大小的函数都以 px 为单位。无论是 LayoutParams 里的 width 和 height ,还是 setMargins 和 setPadding,参数单位都是 px,要想在代码中使用 dp 设置布局大小或间距,得先把 dp 值转换成 px 值。  

    px 和 dp 的转换

    Kotlin

    import android.content.Context object DimenUtil { fun dp2px(context: Context, dp: Float): Float = dp * context.resources.displayMetrics.density fun px2dp(context: Context, px: Float): Float = px / context.resources.displayMetrics.density }

    上面的单例类也可以写成 Kotlin 中的顶层函数方便调用。  

    Processed: 0.013, SQL: 9