过渡动画不适用于横向模式

时间:2018-04-26 09:58:21

标签: android screen-orientation android-transitions overridependingtransition

我正在尝试在应用程序中的活动之间设置转换动画。我的 right_to_left.xml 正在处理纵向屏幕方向。

这是 right_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXDelta="100%"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXDelta="0" />
</set>

这是 right_to_left_slide_out.xml (在转换时滑出以前的活动。)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXDelta="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXDelta="-100%p" />
</set>

我在 startActivity()之后使用它,并且纵向模式没有问题。

但我添加了一个选项,可将屏幕方向更改为横向模式。

如果启用了横向模式,我会在 onCreate()中使用以下代码设置请求的方向。

//SCREEN ORIENTATION
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

这很有效,在横向模式下创建活动没有任何问题。 但是当我尝试使用正在处理纵向模式的 overridePendingTransition(R.anim.right_to_left,R.anim.right_to_left_slide_out)启动活动时,横向模式下似乎没有过渡动画。

有没有我错过的东西?

修改 我试图创建一个与YDelta一起使用的新动画xml文件。它也没用。

1 个答案:

答案 0 :(得分:0)

动画未播放,因为当应用程序启动时,android studio不会渲染未设置为Visible或Invisible的视图。问题是当动画开始播放时,您的横向视图尚未呈现。它在现场渲染并完全跳过动画。

要测试此理论,只需在您的活动中添加一个版本的景观布局,并使用&lt;包括&gt;并将其设置为不可见。然后运行应用程序。查看动画是否播放。如果确实如此,那么这个理论是正确的,我们可以尝试找出解决方案。

祝你好运。