【发布时间】:2017-10-29 18:02:07
【问题描述】:
我正在使用FragmentTransition,以及两个Fragments 之间的SharedElementTransition。
实际的元素过渡和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 设置(包括CardViewcorners 和View alpha)似乎都不正确。结果显然很难看,而发生过渡时任何 alpha 都出现错误(更多的是相乘效果,而不是叠加)。片段转换似乎不正确支持视图上的 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>
它在左侧的正常显示方式以及片段过渡动画期间的显示方式的屏幕截图:
有没有其他人遇到过这个问题,如果有,他们的解决方法吗?
编辑:
根据要求,我创建了一个复制此行为的小型测试应用程序(在模拟器 api 23/24/25 上测试)-链接:https://github.com/TreeFrogApps/FragmentTransitionTest
【问题讨论】:
-
你能在 github 上发布一个具有这种行为的简单项目吗?
-
@azizbekian 嗨添加了指向小型测试项目的链接,展示了弹出回栈时的这种行为。
-
我已经检查了项目,直到现在我看到了一个与 API 匹配的行为。你能告诉你在执行过渡时会发生什么吗?
-
@azizbekian 从动画的角度来看过渡是有效的,但是当弹出后台堆栈(从片段 B 向后按下)时,小插图/视图(在屏幕的左侧和右侧)一个立即消失,另一个一是透明度立即改变。
标签: android android-fragments android-transitions