SeekBar.OnSeekBarChangeListener.onProgressChanged is called only when the progress actually changes, not necessarily when setProgress is called - this only happens if the new progress is different from the last.
Look at the source SeekBar , which extends AbsSeekBar , which, in turn, extends ProgressBar , we see that the call to setProgress() does not start onProgressChanged() if the new progress is not different from the previous one, as shown in the source below.
public void setProgress(int progress, boolean animate) { setProgressInternal(progress, false, animate); } synchronized boolean setProgressInternal(int progress, boolean fromUser, boolean animate) { if (mIndeterminate) {
jpihl source share