繁体   English   中英

您如何按照“材料设计指南”中的说明“混合”颜色?

[英]How do you “mix” colors as mentioned in the Material Design Guidelines?

《材料设计指南》提到混合和添加阴影。 这是我遇到的一些示例:

根据图标准则:

有色边缘
材质元素的顶部边缘。 色调是颜色与白色的混合 ,可以减轻原始颜色。

阴影边缘
材质元素的底边。 阴影是颜色与较深色调的混合 ,从而使原始颜色变暗。


按钮准则:

凸起的灯光/灯光主题
最小宽度:88dp
高度:36dp
角半径:2dp
停用文字:26%#000000
停用按钮:12%#000000

聚焦: 颜色上的 12%#000000 阴影

问题:
如何将一种颜色与另一种颜色混合?
如何在颜色上加阴影?
我可以在AndroidStudio中/以编程方式执行上述任何操作吗?

如果您要的是算法,则获得两种颜色的4个整数数组,分别为alpha,red,green,blue,分别将它们相加,然后找到新数组的最大值,然后执行max_value / 255,存储该值在变量中,然后除以数组中的每个数字。 希望我没有弄清楚我的段落。 使用BufferedImage获取像素的颜色,然后将其与所需的颜色混合。

示例代码:

public int mixColor(int color,int color2) {

    int red1=(color&0xff0000)>>>16,green1=(color&0xff00)>>>8,blue1=(color&0xff);
    int red2=(color2&0xff0000)>>>16,green2=(color2&0xff00)>>>8,blue2=(color2&0xff);

    int nred=red1+red2,ngreen=green1+green2,nblue=blue1+blue2;
    double maximum=Math.max(nred,Math.max(ngreen,nblue));
    double ratio=maxiumum/255;
    double totalRed=nred/ratio,totalGreen=ngreen/ratio,totalBlue=nblue/ratio;
    int result=(((int)totalRed<<16)|((int)totalGreen<<8)|((int)totalBlue));

    return result;

}

然后,您可以编写新的Color(mixColor(color1,color2))`以获得所需的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM