【问题标题】:How do you "mix" colors as mentioned in the Material Design Guidelines?你如何“混合”材料设计指南中提到的颜色?
【发布时间】:2016-10-07 16:52:17
【问题描述】:

Material Design Guidelines 提到了混合和添加颜色的阴影。以下是我遇到的一些例子:

来自icon 准则:

着色边缘
材质元素的上边缘。 色调是一种颜色与白色的混合,它使原始颜色变亮。

阴影边缘
材质元素的底部边缘。 阴影是一种颜色与较深色调的混合,它会使原始颜色变暗。


来自button 指南:

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

Focused:12% #000000 遮住颜色

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

【问题讨论】:

  • 我不认为这是这个问题的地方,因为它更像是一个 Photoshop 类型的问题
  • 就图标示例而言,您可能是对的,但可以通过编程方式设置按钮颜色。
  • 如果您尝试以编程方式混合两个 ARGB 值,我确信有一些算法可以混合

标签: java android android-studio colors material-design


【解决方案1】:

如果你要求一个算法,那么得到一个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;

}

然后你可以只写 new Color(mixColor(color1,color2))` 来得到想要的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 2020-06-21
    • 2015-08-15
    • 1970-01-01
    • 2019-02-17
    • 2015-08-13
    • 2019-02-28
    • 2015-08-02
    相关资源
    最近更新 更多