FragmentTransaction t = getFragmentManager().beginTransaction() ;
//left to right
t.setCustomAnimations(R.anim.left_to_right, R.anim.left_to_right_out);
我在FragmentTransaction中有一个动画。 有没有办法知道动画何时结束或者任何animationListener模拟?
答案 0 :(得分:0)
我从未使用过Fragments,但我曾经遇到过类似的问题。我想知道滚动结束的时间。你可能做的事情是实现自己的监听器。您可以创建一个runnable(animationTask)并进行runnable检查以查看是否已满足某些条件以确定动画是否已结束,如果没有,则继续调用runnable。
为了做到这一点,你需要创建自己的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()返回的FragmentTransaction.beginTransaction();进入M_FragmentTransaction,因为你不能做child = parent。我不太确定这是否比它的价值更麻烦,但这种方法帮助我解决了我的问题。
希望这有帮助!