Как был построен Progress Bar setValue ()? - PullRequest
0 голосов
/ 16 января 2019

В настоящее время я создаю пользовательский 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. Спасибо.

...