android - 过渡动画在横向模式下不起作用
问题描述
我正在尝试为我的应用程序中的活动之间的过渡设置动画。我有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 文件。它也没有用。
解决方案
动画未播放,因为 android studio 在应用启动时不会渲染未设置为可见或不可见的视图。问题是动画开始播放时您的横向视图尚未呈现。它在现场渲染它并完全跳过动画。
要测试这个理论,只需向您的活动添加一个带有 <include> 的横向布局版本并将其设置为不可见。然后运行应用程序。看看动画是否播放。如果是这样,那么这个理论是正确的,我们可以尝试找出解决方案。
祝你好运。
推荐阅读
- algorithm - 确定循环具有乘法因子时的时间复杂度
- java - Android - 如何使用 Volley 库将多维 JSON 结果处理为微调器
- python - pandas to_sql 中的 dtype 引发 ValueError
- oracle - 在 Oracle 的参数过程中传递 1000 条表记录
- python - python - 将多个字符串日期时间格式转换为特定的日期格式
- reactjs - 使用反应数据网格进行编辑后启用更新我的表
- python - 如何通过scrapy获取动态数据?
- wordpress - WooCommerce | 可变产品 | 每个值将相同的图像分配给属性 X(Y 之外)
- c++ - 对函数使用宏覆盖
- authorization - 如何在 vue-tables-2 组件请求中添加附加授权参数