Android 如何在此代码上设置FragmentTransaction的CustomAnimations

Android 如何在此代码上设置FragmentTransaction的CustomAnimations,android,fragmenttransaction,Android,Fragmenttransaction,我有5个片段,我使用以下代码为FragmentTransaction设置CustomAnimations: FragmentTransaction trans = getFragmentManager().beginTransaction(); trans.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right); 但是如何设置此项的自定义动画: @Override public bool

我有5个片段,我使用以下代码为FragmentTransaction设置CustomAnimations:

FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
但是如何设置此项的自定义动画:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        if (getSupportFragmentManager().getBackStackEntryCount() == 0)
        {
            this.finish();
            return false;
        }
        else
        {
            getSupportFragmentManager().popBackStack();
            return false;
        }



    }

    return super.onKeyDown(keyCode, event);
}
还有第二个方法(),它有两个额外的ID,用于在弹出后堆栈时包含要使用的动画。在最后一个点中弹出后堆栈(事务被反转)时,传递希望出现的动画ID

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, 
                                android.R.anim.slide_out_right,
                                ANIMATION_ID_FOR_ENTERING_VIEW,
                                ANIMATION_ID_FOR_EXITING_VIEW);
那么当你打电话的时候

getFragmentManager().popBackStack();
将播放动画,传递给该方法的第三个动画将为最初删除的视图播放,第四个动画将为可见且正在删除的视图播放。根据您在初始事务中的当前动画,我猜您希望使用android.R.anim.slide\u rightandroid.R.anim.slide\u out\u left作为后台堆栈动画(见下文):

您只需在最初将片段添加到堆栈时调用setCustomAnimations(就像您现在所做的,只需添加额外的动画ID),后堆栈将记住您设置的动画,并在您弹出时自动播放它们


注意:此方法仅在API 13及更高版本中可用,除非您使用的是support v4 jar,它看起来就是(因为您使用的是getSupportFragmentManager()而不是常规方法)。

非常感谢兄弟!我从昨天开始一直在搜索这个。@anthonycrIt很遗憾,即使是官方文档也没有很好地解释如何使用
setCustomAnimations()
函数以及每个参数背后的逻辑推理。谢谢你,伙计。
transaction.setCustomAnimations(android.R.anim.slide_in_left,
                                android.R.anim.slide_out_right,
                                android.R.anim.slide_in_right,
                                android.R.anim.slide_out_left);