私のアプリには、UI スレッドで実行される操作がそれほど頻繁ではなく、長時間 (最大 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" />
回転しないのが難点。UI スレッドがビジーであっても、どうすれば回転させることができますか?
イベントのチェーンを作成してインクリメントしようとしましたが、おそらく UI スレッドがビジーであるため、2 つのイベントしか取得できません。
// 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);
}
このアニメーションを実現する簡単な方法は何ですか? フレームごとのアニメーションの方が簡単ですか?