繁体   English   中英

反向进入和退出 animation 用于 RTL 布局 - Android 导航组件

[英]Reverse enter and exit animation for RTL layout - Android Navigation Component

我正在使用 Android 导航架构组件在片段之间导航。 我已经为片段目的地之一设置了进入和退出 animation。 Animation 工作正常,从左到右和从右到左的布局都一样。 我需要这个 animation 应该考虑 RTL 布局的相反边缘,即startend属性做什么而不是leftright 实现相同目标的最简单方法是什么?

<fragment
    android:id="@+id/sign_in_fragment"
    android:name="com.example.SignInFragment">

    <action
        android:id="@+id/action_sign_up"
        app:destination="@id/sign_up_fragment"
        app:enterAnim="@anim/slide_in_right"
        app:exitAnim="@anim/slide_out_left"/>

</fragment>

<fragment
    android:id="@+id/sign_up_fragment"
    android:name="com.example.SignUpFragment"/>

动画/slide_out_left

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

动画/slide_in_right

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

就像您对不同密度版本的可绘制对象所做的一样,您可以在anim anim-ldrtl中使用相同的anim资源名称但交换行为的动画资源的 RTL 版本。

例如res\anim-ldrtl\ slide_out_left.xml的 slide_out_left.xml 将包含slide_out_right.xml等的动画。

您可以在res下创建anim-ldrtl目录,也可以为此使用 Android studio:

右键单击res\anim -> 新建 -> Animation 资源文件

在此处输入图像描述

在此处输入图像描述

使用数据绑定你可以做到这一点

<layout>
    <data>
      <variable
            name="isRTL"
            type="Boolean" />
    </data>

    <fragment
        android:id="@+id/sign_in_fragment"
        android:name="com.example.SignInFragment">
    
        <action
            android:id="@+id/action_sign_up"
            app:destination="@id/sign_up_fragment"
            app:enterAnim="@{isRTL ? @anim/slide_in_right : @anim/slide_out_left}"
            app:exitAnim="@{isRTL ? @anim/slide_out_left : @anim/slide_in_right}"/>
    
    </fragment>
</layout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM