如何实现片段删除动画

40
我想要为片段的移除添加动画效果。
我尝试过:
getSupportFragmentManager().beginTransaction()
    .setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
    .remove(myFragment)
    .commit();

但是这个片段只是消失了。

我注意到离开动画仅在使用“replace”时播放,所以我尝试将该片段替换为空片段,如下:

getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
    .replace(viewId, new Fragment())
.commit();

但它仍然只是消失了消失了。

那么,我如何使片段的移除有动画效果?

13个回答

0

输入内容:
这是一个新的片段,必须显示

退出内容:
这是当前片段,必须隐藏

弹出进入内容:
这是以前的片段,必须显示

弹出退出内容:
这是当前片段,必须隐藏

要使用这些动画效果,您应该在显示或隐藏事务命令上针对它们进行目标设置。退出动画不适用于删除/替换过程。


0

setCustomAnimations(enter, exit, popEnter, popExit) 支持进入和退出动画,因此必须设置四个动画并在 transaction.replace() 之前保留。

Kotlin:

    val manager = supportFragmentManager
    val transaction = manager.beginTransaction()
    transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right ,
            android.R.anim.slide_in_left, android.R.anim.slide_out_right)
    transaction.commit()

0

https://developer.android.com/training/basics/fragments/animate中查看不同种类的动画变体。

您可以在任何事件(按钮单击、超时等)中编写片段内的代码:

parentFragmentManager.beginTransaction()
    .setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)
    .remove(this)
    .commitAllowingStateLoss()
// parentFragmentManager.popBackStack() - might be needed if the fragment keeps visible after removing.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接