【问题标题】:Transition animation is not working on landscape mode过渡动画在横向模式下不起作用
【发布时间】:2018-10-06 23:33:56
【问题描述】:

我正在尝试为我的应用程序中的活动之间的过渡设置动画。我有 right_to_left.xml 正在处理 Portrait 屏幕方向。

这里是 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()之后使用的,Portrait模式没有问题。

但我添加了将屏幕方向更改为横向模式的选项。

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

//SCREEN ORIENTATION
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

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

有什么我错过的吗?

编辑: 我试图创建一个与 YDelta 一起使用的新动画 xml 文件。它也没有工作。

【问题讨论】:

  • 在清单中为您的活动添加 android:configChanges="orientation"

标签: android screen-orientation android-transitions overridependingtransition


【解决方案1】:

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

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

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多