将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