Open InvictaAnima opened 6 years ago
I succeeded at achieving my goal, this is the solution:
class SeekBarOnProgressChangeListener implements DiscreteSeekBar.OnProgressChangeListener {
int color;
int colorGreen;
int colorYellow;
int colorRed;
public SeekBarOnProgressChangeListener() {
colorGreen = ContextCompat.getColor(getContext(), R.color.colorSneekBarGreen);
colorYellow = ContextCompat.getColor(getContext(), R.color.colorSneekBarYellow);
colorRed= ContextCompat.getColor(getContext(), R.color.colorSneekBarRed);
}
@Override
public void onProgressChanged(DiscreteSeekBar seekBar, int value, boolean fromUser) {
boolean colorChanged = false;
if(value < 20) {
if(color != colorGreen){
color = colorGreen;
colorChanged = true;
}
} else if(value < 40) {
if(color != colorYellow){
color = colorYellow;
colorChanged = true;
}
} else {
if(color != colorRed){
color = colorRed;
colorChanged = true;
}
}
if(colorChanged) {
seekBar.setScrubberColor(color);
seekBar.setThumbColor(color, color);
MotionEvent motionEvent = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_UP, 0, 0, 0);
seekBar.dispatchTouchEvent(motionEvent);
}
}
The thumb reappears in a changed color when new color is set, it is good enough for me, but if anyone has a solution that changes thumb color without recreating it, please post the solution here.
Does anyone know how to change indicator color while scrolling?
When i use:
` class SeekBarOnProgressChangeListener implements DiscreteSeekBar.OnProgressChangeListener { int color;
}`
The color changes since next use of seekBar, not as i want instantly. Proof: On first use: https://s29.postimg.org/mhofv9n3b/green.png On second use: https://s29.postimg.org/55o39ttlz/red.png