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

wgmfuz8q  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(318)

我目前正在处理一个问题,其中一些ui组件的背景必须是:屏幕的主颜色加上30%的不透明度。
主颜色是从后端服务检索的,其形式为:#224466。
现在,我想应用30%的不透明度,以我收到的任何颜色。我提出的解决方案涉及到字符串解析,它正在工作,但我对此不满意:
我是这样做的:

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

你知不知道有没有更好的办法,也许让 Color 同学们,解决上述任务的方法是什么?

xzabzqsa

xzabzqsa1#

使用颜色和颜色工具

//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
}

相关问题