美文网首页
最佳实践系列 -- Android单位转换(dp/px/sp)

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

作者: 寻水的鱼Chock | 来源:发表于2021-11-24 17:49 被阅读0次

最佳实践

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
}

相关文章

网友评论

      本文标题:最佳实践系列 -- Android单位转换(dp/px/sp)

      本文链接:https://www.haomeiwen.com/subject/mptotrtx.html