最佳实践系列 -- Android单位转换(dp/px/sp)

2021-11-24  本文已影响0人  寻水的鱼Chock

最佳实践

view.height = 20.dp2px() //设置高度为20dp
view.height = 20.2f.dp2px() //设置高度为20.2dp

源码(Kotlin扩展)

fun Number.px2dp(): Float {
    val f = toFloat()
    val scale: Float = Resources.getSystem().displayMetrics.density
    return (f / scale + 0.5f)
}

fun Number.dp2px(): Int {
    val f = toFloat()
    val scale: Float = Resources.getSystem().displayMetrics.density
    return (f * scale + 0.5f).toInt()
}

fun Number.dp2pxFloat(): Float {
    val f = toFloat()
    val scale: Float = Resources.getSystem().displayMetrics.density
    return f * scale
}

fun Number.sp2px(): Int {
    val f = toFloat()
    val scale: Float = Resources.getSystem().displayMetrics.scaledDensity
    return (f * scale + 0.5f).toInt()
}

fun Number.sp2pxFloat(): Float {
    val f = toFloat()
    val scale: Float = Resources.getSystem().displayMetrics.scaledDensity
    return f * scale
}
上一篇 下一篇

猜你喜欢

热点阅读