我花了很多时间试图找出为什么我的活动在调用Finish()时没有显示任何转换。默认的show / appear动画可以正常工作。
我不想使用自定义动画覆盖待处理的转换。我只想要默认转换。
我创建了一个包含几个常规活动的全新项目,并按预期过渡。然后我创建了2 AppCompatActivity
并将支持库添加到项目中,同样的问题。
这就是我的主题在values
上的样子:
<style name="ChefTheme" parent="ChefTheme.Base">
</style>
<style name="ChefTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:windowBackground">@color/window_background</item>
</style>
这是values-v21
:
<style name="ChefTheme" parent="ChefTheme.Base">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
知道为什么会发生这种情况?
答案 0 :(得分:1)
您似乎正在将窗口应用为半透明,并且您正在使用API 21+设备进行测试。
因此,如果您删除了以下行:
<item name="android:windowIsTranslucent">true</item>
它应该恢复正常。实际上,如果您不需要使用特定于材料设计的API,则没有理由使用values-v21
文件夹。但是,包括一个将通过覆盖样式影响API 21+设备。
这里最简单的解决方法就是确保你知道你所覆盖的那种风格。
答案 1 :(得分:0)
使用finishAfterTransition()
代替finish()
为我解决了这个问题。我认为这比覆盖过渡更为干净。如果需要半透明的窗口,这也是最好的选择。