我正在使用
实际元素转换和
FragmentTransition
和SharedElementTransition
在两个Fragment
之间进行转换。实际元素转换和
Fragment
转换由一组不同的转换组成,以创建所需的动画。我对动画没有问题,但为了清晰起见,我包含了所有使用的转换: val moveElementTransition: Transition by lazy { TransitionInflater.from(context).inflateTransition(android.R.transition.move) }
val noElementTransition:Transition by lazy { TransitionSet().addTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.no_transition)) }
val exitTransition: Transition by lazy { TransitionSet().addTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.slide_left)).setDuration(200L).setStartDelay(0L) }
val reenterTransition: Transition by lazy { TransitionSet().addTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.slide_left)).setDuration(200L).setStartDelay(450L) }
val enterTransition: Transition by lazy { TransitionSet().addTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.slide_bottom)).setDuration(200L).setStartDelay(400L) }
问题
为了澄清,当我从 FragmentA
切换到 FragmentB
以及在弹出返回堆栈并反转动画时,所有的过渡都是“正常”的。
然而,在过渡发生时,似乎视图上的所有 alpha 设置(包括 CardView
的角和 View
的透明度)均不正确。结果显然很丑陋,因为在过渡发生时,任何透明度都会显示不正确(更像是乘法效应,而不是覆盖)。似乎 Fragment 过渡中不正确地支持了视图的 alpha?
下面是我在某些视图中使用的 alpha 暗角的示例:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="0"
android:endColor="@android:color/transparent"
android:startColor="@color/colorWindowBackgroundTint"
android:type="linear"/>
</shape>
左边是vignette正常显示的截图,右边是在Fragment Transition动画期间显示的样子:
有人遇到过这个问题吗?如果有,有没有解决方法?
编辑:
如请求所示,我创建了一个小型测试应用程序来复制此行为(在模拟器api 23/24/25上进行测试)-链接:https://github.com/TreeFrogApps/FragmentTransitionTest