8
フラグメントを置き換えるカスタムアニメーションを使用しています。アニメーションが開始され、有効になってからアニメーションが終了すると、いくつかのボタンを無効にしたいと思います。これどうやってするの?setCustomAnimationコールバック前後のフラグメンテーション
フラグメントを置き換えるカスタムアニメーションを使用しています。アニメーションが開始され、有効になってからアニメーションが終了すると、いくつかのボタンを無効にしたいと思います。これどうやってするの?setCustomAnimationコールバック前後のフラグメンテーション
私がお勧めするのは、Fragments
のすべてが、アニメーションイベントを処理するためにオーバーライドできるいくつかのメソッドを定義している基本クラスを作成することです。次に、onCreateAnimation()
(サポートライブラリを使用していると仮定します)をオーバーライドして、アニメーションコールバックでイベントを送信します。たとえば:
protected void onAnimationStarted() {}
protected void onAnimationEnded() {}
protected void onAnimationRepeated() {}
@Override
public Animation onCreateAnimation (int transit, boolean enter, int nextAnim) {
//Check if the superclass already created the animation
Animation anim = super.onCreateAnimation(transit, enter, nextAnim);
//If not, and an animation is defined, load it now
if (anim == null && nextAnim != 0) {
anim = AnimationUtils.loadAnimation(getActivity(), nextAnim);
}
//If there is an animation for this fragment, add a listener.
if (anim != null) {
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart (Animation animation) {
onAnimationStarted();
}
@Override
public void onAnimationEnd (Animation animation) {
onAnimationEnded();
}
@Override
public void onAnimationRepeat (Animation animation) {
onAnimationRepeated();
}
});
}
return anim;
}
次に、あなたのFragment
サブクラスのために、ただボタンを有効にするには、ボタン、およびonAnimationEnded()
を無効にするonAnimationStarted()
をオーバーライドします。
'anim'は常にnullなので、SlideやExplodeのようなマテリアルトランジションでは機能しません。 – Servus7