我正在尝试使用Jetpack导航组件。医生来了讨论的是动画转换。示例代码使用动画slide_in_right和slide_out_left,在默认情况下它们将出现在那里--没有关于如何创建它们的说明。
<action
...
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />但是,当我单击如下所示的属性时,在导航图资源的设计视图中,我只看到slide_in_left和side_out_right。为什么其他两个人不在?
我的目标是制作一个像动画一样的推送/弹出,其中新视图从右边进入,旧视图移到左边。(将导航堆栈中的“弹出”反转)
我确实看到了一些关于这些动画的其他问题,但它们的答案都是旧的,听起来可能是个bug,所以我想知道2020年的答案是什么。


发布于 2020-07-16 07:13:13
可以在SDK中找到slide_in_rigth和slide_out_left动画,但是当我尝试使用from时,我得到了以下错误:
AAPT: error: resource :anim/幻灯片_in_right是私有的。
因此,我将动画内容复制到资源文件中,如下所示:

下面是我从Android复制的动画内容。对于slide_in_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="50%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>对于slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>现在,它们可以与@ navigation.xml一起使用,因此我将其添加到中,如下所示:
<action
...
app:enterAnim="@animator/slide_in_right"
app:exitAnim="@animator/slide_out_left" />它对我有用,我希望它能帮助你。
https://stackoverflow.com/questions/62923422
复制相似问题