我需要在麦克风可视化工具中插入四种颜色。
如果用户沉默,则为1种颜色为白色。
如果用户轻声说,则为红色。
3 如果用户正常说明,则为黄色。
如果用户说话,则为4绿色 大声。
我为改变颜色创建了Paint void,但我不知道如何插入这四种颜色,我只知道如何使用两种颜色。我需要做什么?
// used to take colors mix according to proportion
private int interpolateColor(final int a, final int b,
final float proportion) {
final float[] hsva = new float[3];
final float[] hsvb = new float[3];
Color.colorToHSV(a, hsva);
Color.colorToHSV(b, hsvb);
for (int i = 0; i < 3; i++) {
hsvb[i] = interpolate(hsva[i], hsvb[i], proportion);
}
return Color.HSVToColor(hsvb);
}
private float interpolate(final float a, final float b,
final float proportion) {
return (a + ((b - a) * proportion));
}
答案 0 :(得分:1)
假设您已经在浮点值中确定了用户的当前“音量”,其中0表示完全无声,并且1是最大值,那么我会这样做:
float v = userVolume();
if (v < SOFT_CUTOFF)
color = interpolateColor(SILENT_COLOR, SOFT_COLOR, v/SOFT_CUTOFF);
else if (v < NORMAL_CUTOFF)
color = interpolateColor(SOFT_COLOR, NORMAL_COLOR, (v-SOFT_CUTOFF)/(NORMAL_CUTOFF-SOFT_CUTOFF));
else
color = interpolateColor(NORMAL_COLOR, LOUD_COLOR, (v-NORMAL_CUTOFF)/(1-NORMAL_CUTOFF));
SOFT_CUTOFF和NORMAL_CUTOFF应该设置为0到1之间的值,用于定义它们应该是全彩的比例。