将colorPrimary转换为colorPrimaryDark(暗多少)

在Material Design的指导下,状态栏应比操作栏暗多少?我在运行时为操作栏设置了颜色,并且无法在编程时知道该颜色,那么如何获得正确的状态栏颜色?

我知道我可以用这个使颜色变深

this.getSupportActionBar().setBackgroundDrawable(new ColorDrawable(colorPrimary));                              

float[] hsv = new float[3];

Color.colorToHSV(colorPrimary, hsv);

hsv[2] *= 0.8f;

int colorPrimaryDark = Color.HSVToColor(hsv);

if(Build.VERSION.SDK_INT>=21)

Chat.this.getWindow().setStatusBarColor(colorPrimaryDark);

但我不确定要变暗多少

回答:

官方的Material Color

Tool使用

函数基于JS库chroma.js计算变暗/变亮的颜色,该函数的算法基于CIELAB颜色空间。

***

Github上

的源代码摘录

Color.prototype.darken = function(amount=1) {

const me = this;

const lab = me.lab();

lab[0] -= LAB_CONSTANTS.Kn * amount;

return new Color(lab, 'lab').alpha(me.alpha(), true);

}

“材质颜色工具”仅使用了数量参数的后备值,而LAB_CONSTANTS.Kn为18时,它将给定基础颜色的 * 减去18(变暗)/增加18(变亮)。

以上是 将colorPrimary转换为colorPrimaryDark(暗多少) 的全部内容, 来源链接: utcz.com/qa/413636.html

回到顶部