首页 > 解决方案 > 过渡动画在横向模式下不起作用

问题描述

我正在尝试为我的应用程序中的活动之间的过渡设置动画。我有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 文件。它也没有用。

标签: androidscreen-orientationandroid-transitionsoverridependingtransition

解决方案


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

要测试这个理论,只需向您的活动添加一个带有 <include> 的横向布局版本并将其设置为不可见。然后运行应用程序。看看动画是否播放。如果是这样,那么这个理论是正确的,我们可以尝试找出解决方案。

祝你好运。


推荐阅读