【问题标题】:Dynamically apply opacity to hex color将不透明度动态应用于十六进制颜色
【发布时间】:2020-12-25 17:36:35
【问题描述】:

我目前正在解决一些 UI 组件的背景必须是:屏幕的主颜色加上 30% 的不透明度的问题。

主颜色是从后端服务检索的,格式为:#224466。

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

我是这样做的:

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

您知道是否有更好的方法(可能涉及Color 类)来解决上述任务?

【问题讨论】:

    标签: java android opacity


    【解决方案1】:

    使用颜色和 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
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-28
      • 2021-10-06
      • 2020-12-25
      • 2020-08-12
      • 2014-09-22
      • 1970-01-01
      • 2013-10-01
      • 2010-12-17
      相关资源
      最近更新 更多