Android 动画嵌套片段
Posted
技术标签:
【中文标题】Android 动画嵌套片段【英文标题】:Android animated nested fragments 【发布时间】:2016-11-26 16:28:20 【问题描述】:我有一个活动,里面有一个片段 A。片段 A 在其中嵌套了片段 B。我正在使用以下代码将 B 与 C 切换:
getChildFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.move_left_in, R.anim.move_left_out,R.anim.move_right_in, R.anim.move_right_out)
.replace(R.id.container, fragmentC)
.addToBackStack("nested")
.commit();
在那之后我在做
getChildFragmentManager().popBackStack();
是什么让我回到了片段 B。 之后,我使用代码将片段 A 与片段 D 切换
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.move_up_in, R.anim.move_up_out, R.anim.move_down_in, R.anim.move_down_out)
.replace(R.id.fragment_holder, fragmentD)
.addToBackStack("fragments")
.commit();
当播放 A->D 事务的动画时,B 播放事务 C->B 的动画,并且通过弹出回栈得到相同的结果,为什么?
【问题讨论】:
你使用什么支持库版本? 我没有得到你真正想要的东西。您能否详细说明这部分,“当播放 A->D 交易的动画时,B 播放交易 C->B 的动画,并且通过弹出回栈我得到相同的结果,为什么?”?跨度> 【参考方案1】:当您将片段 A 与片段 D 切换时。
片段 A 中的内容与其父片段分离,然后发生事务 A -> D,
由于您已经为片段设置了动画,因此这些动画导致的延迟是您的原因,请先查看 B 中遗漏的动画, 然后是 A -> D 动画。
【讨论】:
【参考方案2】:不要使用 getChildFragmentManager(),
使用支持fragmnetManager意味着为什么使用getSupportFragmentManager?
嵌套片段的Bcz
我希望您的问题可以通过此解决方案得到解决。谢谢:)
【讨论】:
因为我在使用片段制作动画时也遇到了这个问题,所以,我只是将它从子管理器更改为支持管理器,这样之后我就得到了我想要的结果。跨度> 你可以在这里查看developer.android.com/reference/android/app/… 那么生命周期呢?如果您旋转设备怎么办,片段内的片段是否正确重新创建? 你可以检查这个,***.com/questions/8474104/…以上是关于Android 动画嵌套片段的主要内容,如果未能解决你的问题,请参考以下文章
Android:将“ViewPager”动画从片段更改为片段
Android使用片段在viewpager中的页面滚动上放置动画
Android TV(leanback)中的持久标头片段(禁用动画)