2
FragmentTransaction t = getFragmentManager().beginTransaction() ;
            //left to right
            t.setCustomAnimations(R.anim.left_to_right, R.anim.left_to_right_out);

FragmentTransactionにアニメーションがあります。アニメーションがいつ終了したか、またはanimationListenerアナログを知る方法はありますか?

4

1 に答える 1

0

Fragmentsを使用したことはありませんが、scrollViewで同様の問題が発生したことがあります。巻物がいつ終わったか知りたかった。おそらくできることは、独自のリスナーを実装することです。ランナブル(animationTask)を作成し、そのランナブルをチェックして、アニメーションが終了したかどうかを判断するための条件が満たされているかどうかを確認し、満たされていない場合は、ランナブルを呼び出し続けます。

これを行うには、FragmentTransactionを拡張する独自のFragmentTransactionクラスを作成し、インターフェイス(リスナーになります)を宣言する必要があります。

public abstract class M_FragmentTransaction extends FragmentTransaction {
private Runnable animationTask;
public interface OnAnimationFinish{
    void onAnimationStopped();
}

private OnAnimationFinish onAnimationFinishListener;

public M_FragmentTransaction() {
    super();
    animationTask = new Runnable() {

        public void run() {

            while(!SOMETHING_TO_DETERMINE_IF_HAS_STOPPED){//has stopped

                if(onAnimationFinishListener!=null){

                    onAnimationFinishListener.onAnimationStopped();
                }
            }
        }
    };
}

public void setOnAnimationFinish(OnAnimationFinish listener){
    onAnimationFinishListener = listener;
}

public void startAnimationStart(){

    animationTask.run();
}

これを投稿したコードに入れると、getFragmentManager()。beginTransaction();から返されたFragmentTransactionの変換を検討する必要があります。child = parentを実行できないため、M_FragmentTransactionに変換します。これが価値以上の問題であるかどうかはわかりませんが、このアプローチは私の問題を解決するのに役立ちました。

お役に立てれば!

于 2012-10-05T16:02:42.013 に答える