Как я могу сменить цвет текста в 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, но что конкретно тут не работает - я не могу понять.


Ответы (0 шт):