В настоящее время я создаю пользовательский ProgressBar, но я столкнулся с проблемой, заключающейся в том, что если я вызову setMaxValue () и setValue () одновременно, invalidate () не вызовет onDraw (). Поэтому я глубоко погрузился в исходный код ProgressBar, но не могу узнать, как они изменили прогрессбар (с помощью animate).
private synchronized void doRefreshProgress(int id, int progress, boolean fromUser,
boolean callBackToApp, boolean animate) {
int range = mMax - mMin;
final float scale = range > 0 ? (progress - mMin) / (float) range : 0;
final boolean isPrimary = id == R.id.progress;
if (isPrimary && animate) {
final ObjectAnimator animator = ObjectAnimator.ofFloat(this, VISUAL_PROGRESS, scale);
animator.setAutoCancel(true);
animator.setDuration(PROGRESS_ANIM_DURATION);
animator.setInterpolator(PROGRESS_ANIM_INTERPOLATOR);
animator.start();
} else {
setVisualProgress(id, scale);
}
if (isPrimary && callBackToApp) {
onProgressRefresh(scale, fromUser, progress);
}
}
Может кто-нибудь объяснить мне о визуальном прогрессе и как он отражает текущий прогресс ProgressBar. Спасибо.