12

私はTranslateAnimation私のクラスにいます。アニメーションが自動的に開始されます。

クリックするとアニメーションがキャンセルされるボタンを設定しました(animation.cancel();)。

また、クラスに AnimationListener を設定しました。アニメーションが終了したら、新しいアクティビティを開始します (メニューに移動します)。

public void onAnimationEnd(Animation animation) {
    startActivity(new Intent(Class.this, Class2.class));
}

私のアプリは、アニメーションが終了する前にユーザーがボタンをクリックする必要があることに依存しています。問題は、それanimation.cancel();がアニメーションの終わりとして認められていることです。

アニメーションの終了としてカウントされなかった別の方法でアニメーションをキャンセルするにはどうすればよいですか? それは可能ですか?

前もって感謝します!

4

2 に答える 2

33

アニメーションがキャンセルされたら、リスナーを削除して、onAnimationEnd呼び出されないようにすることができます。

@Override
public void onAnimationCancel(Animator animation) {
  animation.removeAllListeners();
}
于 2016-02-10T10:13:21.403 に答える
4

animation.cancel() は、API ドキュメントで説明されているように、アニメーション リスナーを呼び出しています。

アニメーションをキャンセルすると、アニメーション リスナー (設定されている場合) が呼び出され、アニメーションの終了が通知されます。アニメーションを手動でキャンセルする場合は、アニメーションを再開する前に reset() を呼び出す必要があります。

cancel() と onAnimationEnd() で異なる動作が必要な場合は、ボタンのクリック時に設定できるブール変数を提案し、onanimationend が true かどうかを確認します。

于 2013-03-03T19:07:10.660 に答える