Android 将资源文件中的颜色中转化成6位的16进制

48 阅读1分钟

1. 将资源中的颜色值转换成6位数的颜色值String,如:R.color.white转化成 #FFFFFF。代码如下

/**
     * 将资源中的颜色值转换成6位数的颜色值String
     * @param resId 资源文件Id 如:R.color.white
     */
    fun resIdToString(resId:Int):String{
        val color = ResourcesCompat.getColor(
            context.resources,
            resId,
            null
        )
        var hexString = Integer.toHexString(color).substring(2)
        Log.i(TAG, "颜色资源转String: $hexString")
        return hexString
    }
  1. 设置颜色的透明度
/**
 * 设置颜色的透明度
 * @param alpha 透明度
 * @param colorId 资源文件Id 如:R.color.white
 */
fun setColorAlpha(alpha: Int, colorId: Int): String {
    val color = resIdToString(colorId)
    val alphaStr = alphaConversion(alpha)
    return "#$alphaStr$color"
}
  1. 透明度转化
/**
 * 透明度转化成2位的16进制
 * @param 透明度的值 如:86
 */
fun alphaConversion(alpha: Int): String {
    val number = alpha/100 * 255
    // 格式化成十六进制字符串并转换大写
    val hexNumber = Integer.toHexString(number).toUpperCase()
    Log.i("TAG", "透明度转色值结果:#$hexNumber")
    return hexNumber
}