Как я могу сменить цвет текста в TextView в зависимости от положения SeekBar?
У меня есть объект TextView, цвет которого должен меняться в зависимости от положения SeekBar.
h_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
h_text.setTextColor(HSV2RGB(i, 255, 255));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
});
По идее, должно браться исходное значение Progress, в методе HSV2RGB цветовое пространство HSV я преобразую в RGB, и текст должен менять цвет. Но вместо этого текст исчезает. Что я делаю не так?
Код HSV2RGB:
public int HSV2RGB(int h, int s, int v) {
float r = 0, g = 0, b = 0;
int _r, _g, _b;
float H = (float) h / 255;
float S = (float) s / 255;
float V = (float) v / 255;
int i = (int)(H * 6);
float f = H * 6 - i;
float p = V * (1 - S);
float q = V * (1 - f * S);
float t = V * (1 - (1 - f) * S);
switch (i % 6) {
case 0: {
r = V;
g = t;
b = p;
}
case 1: {
r = q;
g = V;
b = p;
}
case 2: {
r = p;
g = V;
b = t;
}
case 3: {
r = p;
g = q;
b = V;
}
case 4: {
r = t;
g = p;
b = V;
}
case 5: {
r = V;
g = p;
b = q;
}
}
_r = Math.round(r * 255);
_g = Math.round(r * 255);
_b = Math.round(r * 255);
return Integer.parseInt(Integer.toHexString(_r) + Integer.toHexString(_g) + Integer.toHexString(_b), 16);
}
Попытался при создании окна задать цвет через метод HSV2RGB, объект пропал. Значит, проблема в HSV2RGB, но что конкретно тут не работает - я не могу понять.