ProgressBar设置进度后进度条回弹Bug

114 阅读1分钟

ProgresBar进度条Drawable变化之后,再调用setProgress(int, true)带有动画的方法会出现进度条回弹效果,如下gif所示

20240823_113241.gif

问题的原因是ProgressBar#mVisualProgress因使用mSecondaryProgress(未设置,所以值是0), 导致再调用setProgress(int progress, boolean animate),出现动画闪烁问题,理论应从当前进度到目标进度,实际上是0到目标进度。

解决方案,重新设置下不同进度即可:

int curProgress = getProgress();
setProgress(curProgress - 1);
setProgress(curProgress);