Итак, я пытаюсь создать индикатор выполнения достижений в своем приложении. Эти индикаторы прогресса должны показывать свое продвижение после открытия активности. Я знаком с регулярными индикаторами выполнения, в которых вы обновляете свой статус списка и устанавливаетепрогресс на индикатор выполнения, но каким-то образом я не смог выполнить эту задачу. В приведенном ниже коде я попытался создать индикатор выполнения, который заполняется до 30/100, а затем останавливается, как будто «достижение прогресса» равнялось 30. Для удобства понимания я работаю с простыми целыми числами. Текущее поведение даже не близко, поскольку индикатор выполнения просто вращается без какого-либо обновления. Обратите внимание, что прогресс не связан ни с каким другим компонентом, кроме простых целых чисел.Создание бар «achievemenet progress»
Edit: Это поведение я хочу: https://dribbble.com/shots/2758323-Ring-Progress
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_points);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setIndeterminate(false);
new TimedProgress();
}
class TimedProgress {
Timer timer;
public TimedProgress() {
timer = new Timer();
timer.schedule(new ProgressTask(), 0, 500);
}
class ProgressTask extends TimerTask {
int progress = 0;
public void run() {
if (progress <30) {
updateProgress(progress);
progress++;
} else {
timer.cancel();
}
}
}
}
public void updateProgress(final int progress) {
if (null != progressBar) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress((int) progress);
}
}
Планировка:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"/>
О, это имеет смысл. Я понял код, но не понимаю, где и как я могу назвать этот класс таймера? И я сохраняю свою AsyncTask как есть, кроме части невидимости? –
О, ладно. Поэтому вы говорите, что я удаляю свой код и заменяю его на этот код. И я также должен преобразовать класс TimedProgress в класс AsyncTask и вызвать его в onCreate для выполнения. Правильно? –
новый TimedProgress(); – usajnf