ImageView
で進捗状況を表示するために使用するAnimationDrawable
があります。プログレススピナーを表示したい場合は、次のようにします。
animDrawable.start();
ObjectAnimator.ofFloat(view, "alpha", 1.0f).setDuration(300).start();
スピナーを非表示にするには、次のようにします。
ObjectAnimator.ofFloat(view, "alpha", 0.0f).setDuration(300).start();
animDrawable.stop();
ただし、これにはアニメーションがすぐに停止するという効果があります。 ObjectAnimator
が0.0アルファに完全にフェードした後にのみ停止するようにします。 「AnimationCompleted」コールバックのラインに沿って何かを設定する方法はありますか?
これを行うより現代的な方法は、 ViewPropertyAnimator
を使用することです。
view.animate()
.alpha(0f)
.withEndAction(new Runnable() {
@Override
public void run() {
// Do something.
}
})
.start();
または、RetroLambdaを使用している場合:
view.animate()
.alpha(0f)
.withEndAction(() -> {
// Do something.
})
.start();
ObjectAnimatorオブジェクトに関する元の質問に、いくつかのアニメーション状態のコールバックを定義するAnimator.AnimatorListenerオブジェクトを設定できます。 public void onAnimationEnd(Animator animation)をオーバーライドしたい
animation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
Toast.makeText(VideoEditorActivity.this, "animation ended", Toast.LENGTH_LONG).show();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
PostOnAnimation(Runnable)を調べることもできます
ドキュメントへのリンク: postOnAnimation(Java.lang.Runnable)