AnderWeb / discreteSeekBar

Apache License 2.0
2.11k stars 401 forks source link

Bubble animation breaks when setting new max value #124

Open EZL0512 opened 5 years ago

EZL0512 commented 5 years ago

I have the following onStopTrackingTouch listener:

 @Override
  public void onStopTrackingTouch(DiscreteSeekBar seekBar) {
       viewModel.updateValue(seekBar.getProgress());
  }

The viewModel observer eventually updates the max value of the seekbar:

this.viewModel.getSettings().observe(this, settings -> {
        this.boostValueSeekBar.setMax(settings.getMax());
        this.boostValueSeekBar.setProgress(settings.getValue());
});

Even if the max value does not change, the thumb handle disappears forever. The animation is also gone.

This only appears to happen if the max value is changed as a direct result of onStopTrackingTouch.

An easy test case is the following:

 @Override
  public void onStopTrackingTouch(DiscreteSeekBar seekBar) {
       seekBar.setMax(seekBar.getMax());
  }

This will permanently break the indicator until the activity or fragment is reloaded.

Expected behaviour At the very least I would expect setting the max value to the same value to do nothing (this can of course be done by the consumer as well). In all other cases I would expect the indicator to keep working when setting the max value from onStopTrackingTouch();