zaf*_*ani 16 android android-fragments fragmenttransaction android-transitions fragment-animation
你好再次堆栈溢出.我有另一个片段问题.(我正在使用android.app.Fragment而不支持片段)
我正在尝试更换片段.但这不像使用那么简单:
fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()
Run Code Online (Sandbox Code Playgroud)
为什么不?好朋友问,因为我newFragment有过渡动画.
动画在哪里定义?另一个很棒的问题,它在碎片onCreateAnimator()中定义
为什么在那里定义?可以找到原因的长答案:嵌套片段转换不正确.现在你需要相信这就是我的项目需要做的事情.
动画是做什么的?从屏幕边缘到其中心的简单滚动,完全覆盖原始片段.请记住,在这种情况下,旧片段只是坐在原地.它具有不移动的动画效果.
问题是newFragment似乎比旧版本具有更低的高程(或z?)值.因此,无法观察到过渡,因为旧片段位于新片段上方.到达动画持续时间结束时,您会看到新片段在旧片段上方闪烁.我期望newFragment从动画开始就覆盖旧版本.
为什么不使用添加?这似乎会产生更多问题,因为我有很多片段要交换进出视图.使用add似乎会在下次使用replace时触发它们的退出动画,即使前面有1 ... n个片段.他们也不会停顿.
为什么不设置高程?因为我支持没有提升属性的api 19.
为什么不对api 19使用ViewCompat.setElevation()?我尝试了它并且有相同的失败结果.
有没有人找到解决这个问题的方法?
我遇到了同样的问题,花了很多时间来修复它.不幸的是,根据我的经验,在此设置中无法使API <= 19.
ViewCompat.setElevation()对于<= 19 API来说,它只是一个NoOp,所以它无法工作.从SDK 21开始,它设置了一个高程,它有点修复了问题.设置Z索引也可以.
我唯一可以建议的是将API <= 19的转换更改为不依赖于Z索引.21岁以上的人可以使用您想要的过渡.这就是我这样做的方式,我认为这很好,因为大多数用户都是21岁以上.
| 归档时间: |
|
| 查看次数: |
622 次 |
| 最近记录: |