活动不会在Finish()上设置动画。它只是消失了

时间:2017-04-11 19:24:43

标签: android xamarin.android

我花了很多时间试图找出为什么我的活动在调用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>

知道为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

您似乎正在将窗口应用为半透明,并且您正在使用API​​ 21+设备进行测试。

因此,如果您删除了以下行:

<item name="android:windowIsTranslucent">true</item>

它应该恢复正常。实际上,如果您不需要使用特定于材料设计的API,则没有理由使用values-v21文件夹。但是,包括一个将通过覆盖样式影响API 21+设备。

这里最简单的解决方法就是确保你知道你所覆盖的那种风格。

答案 1 :(得分:0)

使用finishAfterTransition()代替finish()为我解决了这个问题。我认为这比覆盖过渡更为干净。如果需要半透明的窗口,这也是最好的选择。