添加反向动画时 Android 动画显示空白 View

标签 android android-animation

我通过 xml 制作了动画,例如旋转动画,用于 Activity 转换。第一部分是旋转和缩放动画,它们一起显示半旋转,工作正常,但是当我添加它们的反向与开始偏移时,它们显示空白 View 而不是动画...甚至没有显示动画的第一部分工作正常..

这里是 xml 代码,当只有第一部分存在并且它工作正常时..

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="-15"
    android:toYScale="0.0" />

<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0"
    android:toYScale="1" />


</set>

但是当我添加反向代码时,它总是变成空白......

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="-15"
    android:toYScale="0.0" />

<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0"
    android:toYScale="1" />


 <rotate
    android:startOffset="2000"
    android:duration="2000"
    android:fromDegrees="-15"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0"
    android:toYScale="0.0" />

  <scale
    android:startOffset="2000"
    android:duration="2000"
    android:fromXScale="0"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1"
    android:toYScale="1" />


  </set>

所以请大家告诉我哪里错了......

最佳答案

您不需要复制动画即可实现反向效果。您可以使用android:repeateMode = "reverse"android:repeatCount = "1"

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:toDegrees="-15" />


<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:toXScale="0"
    android:toYScale="1" />

</set>

您需要为缩放旋转动画设置repeatCountrepeatMode。不幸的是,您不能直接在 set 属性中使用它,因为 bugAnimationSet 实现中。

但是此动画将仅应用于一个 Activity 。如果您确实希望第一个 Activity 消失然后出现第二个 Activity ,您需要将动画分成两部分。第一部分将具有旋转缩放直接动画,第二部分将具有反向旋转缩放动画。因此基本上您只需将包含四个动画的 set 拆分为两个文件即可。然后你需要使用这两个动画来开始新的 Activity :

overridePendingTransition(R.anim.direct, R.anim.reversed);

关于添加反向动画时 Android 动画显示空白 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502364/

相关文章:

android - 难以理解 layout_alignWithParentIfMissing

android - Android 上的 Dagger 2 多次注入(inject)

android - 如何动画对话框从屏幕底部滑动到中间而不会弹跳?

android - 如何在 Android 中创建动态启动画面?

Android AnimatedVectorDrawable - 属性 : is not supported for FullPath

android - UnitySendMessage 不适用于非统一 Activity

android - 两个应用程序之间通信的最佳方式

Android:画廊 View 中的动画?

android - 在android中慢慢填充颜色的圆圈

android - 播放服务粒度依赖错误