【问题标题】:how to setCustomAnimations for FragmentTransaction on this code如何在此代码上为 FragmentTransaction 设置自定义动画
【发布时间】:2014-07-29 10:57:41
【问题描述】:

我有 5 个片段,我使用以下代码为 FragmentTransaction 设置自定义动画:

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);
}

【问题讨论】:

    标签: android fragmenttransaction


    【解决方案1】:

    还有第二个 setCustomAnimations 方法 (here's the support library method),它有两个额外的 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_in_rightandroid.R.anim.slide_out_left堆栈动画(见下文):

    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);
    

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

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

    【讨论】:

    • 非常感谢兄弟!我从昨天开始一直在寻找这个。@anthonycr
    • 很遗憾,即使是官方文档也没有很好地解释如何使用setCustomAnimations() 函数以及每个参数背后的逻辑推理。谢谢大佬。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多