我需要在麦克风可视化器中插值四种颜色。
当用户静音时,显示白色。
当用户轻声说话时,显示红色。
当用户正常说话时,显示黄色。
当用户大声说话时,显示绿色。
// 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));
}