【问题标题】:Missing slide_in_right and slide_out_left animations in Android?Android 中缺少 slide_in_right 和 slide_out_left 动画?
【发布时间】:2020-07-16 15:13:13
【问题描述】:

我正在尝试使用 Jetpack 导航组件。 docs here 谈论动画过渡。示例代码使用动画 slide_in_rightslide_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_leftside_out_right。为什么其他两个不在?

我的目标是制作一个类似推/弹出式的动画,其中新视图从右侧进入,旧视图从左侧移出。 (反向“弹出”回导航堆栈。)

我确实看到了一些关于这些动画的其他问题,但他们的答案很旧,而且听起来可能存在错误,所以我想知道 2020 年现在的答案是什么。

【问题讨论】:

    标签: android android-animation android-jetpack-navigation


    【解决方案1】:

    slide_in_rigth 和 slide_out_left 动画可以在 SDK 中找到,但是当我尝试从 XML 中使用时,我得到了这个错误:

    AAPT:错误:资源 android:anim/slide_in_right 是私有的。

    所以我将动画内容复制到我的资源文件中,如下所示:

    这是我从 Android SDK 复制的动画内容。 对于 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>
    

    现在它们可以与@animator 一起使用,所以我添加到我的navigation.xml 如下:

        <action
            ...
            app:enterAnim="@animator/slide_in_right"
            app:exitAnim="@animator/slide_out_left" />
    

    对我有用,希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2017-03-28
      • 2016-07-06
      • 2021-03-17
      • 2012-06-24
      • 2015-12-16
      相关资源
      最近更新 更多