Мое приложение выполняет нечастую операцию, которая выполняется в потоках пользовательского интерфейса и занимает много времени (до 3 секунд). Я хочу отображать анимированные индикаторы ожидания в течение этого времени. Например, вращающийся спиннер. Нет необходимости отображать фактический прогресс, только анимация с фиксированной скоростью.
Я создал настраиваемое диалоговое окно, которое всплывает во время длительной операции, и оно имеет такой макет
<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Проблема в том, что он не вращается. Как заставить его вращаться, даже если поток пользовательского интерфейса занят?
Я пытался создать цепочку событий, чтобы увеличить ее, но я получаю только два события, возможно, потому что поток пользовательского интерфейса занят.
// In the custom dialog class. mProgressBar is the ProgressBar in the layout.
// Called externally once when the dialog is shown
public void tick() {
mProgressBar.incrementProgressBy(10);
mProgressBar.postDelayed(new Runnable() {
@Override
public void run() {
// Not a recursion since it's done in a future event.
tick();
}
}, 100);
}
Какой простой способ добиться этой анимации? Покадровая анимация будет легче сделать?