2012-10-05 45 views
2
FragmentTransaction t = getFragmentManager().beginTransaction() ; 
      //left to right 
      t.setCustomAnimations(R.anim.left_to_right, R.anim.left_to_right_out); 

我在FragmentTransaction中有一个动画。 有什么方法可以知道动画何时完成或者是否有任何动画监听器模拟?有没有什么办法知道什么时候动画在FragmentTransactions中完成

+0

也许这可以回答你的问题:http://stackoverflow.com/questions/11120372/performing-action-after-fragment-transaction-animation-is-finished –

回答

0

我从来没有与碎片的工作,但我已经与滚动型类似的问题一次。我想知道滚动何时结束。你可能做的事情是实现你自己的监听器。您可以创建一个可运行的(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(); 
} 

现在在你的代码贴出你把这个你就必须寻找到转换FragmentTransaction从getFragmentManager()返回的BeginTransaction()。进入M_FragmentTransaction,因为你不能做child = parent。我不太确定这是否比它的价值更麻烦,但这种方法帮助我解决了我的问题。

希望这会有所帮助!

+0

我如何建立我自己的交易如果交易是由FragmentManager创建?你的代码阻塞UI线程我很舒服,根本没有动画。我知道动画的持续时间,我不想猜测动画是否完成,我需要某种回调或类似的东西 –

相关问题