Java 动态地将不透明度应用于十六进制颜色

Java 动态地将不透明度应用于十六进制颜色,java,android,opacity,Java,Android,Opacity,我目前正在处理一个问题,其中一些UI组件的背景必须是:屏幕的主颜色加上30%的不透明度 主颜色从后端服务中检索,其形式为:#224466 现在,我想对我接收到的任何颜色应用30%的不透明度。我提出的解决方案涉及到字符串解析,它正在工作,但我对此不满意: 我是这样做的: if(mainColor.startsWith("#") && mainColor.length == 7){ return "#4D" + mainColor.sub

我目前正在处理一个问题,其中一些UI组件的背景必须是:屏幕的主颜色加上30%的不透明度

主颜色从后端服务中检索,其形式为:#224466

现在,我想对我接收到的任何颜色应用30%的不透明度。我提出的解决方案涉及到字符串解析,它正在工作,但我对此不满意:

我是这样做的:

if(mainColor.startsWith("#") && mainColor.length == 7){
   return "#4D" + mainColor.substring(1) // 4D = 30% alpha
}

您知道是否有更好的方法解决上述任务,包括
Color
类吗?

使用Color和ColorUtils

//pass "#224466" dynamically 
private fun getRequiredColor(mainColor: String): Int {
    val color = Color.parseColor(mainColor)
    val colorWithAlpha30 = ColorUtils.setAlphaComponent(color, 0X4D) //30% opacity constant or else you can pass dynamically 
    return colorWithAlpha30
}