我通过 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>
您需要为缩放
和旋转
动画设置repeatCount
和repeatMode
。不幸的是,您不能直接在 set
属性中使用它,因为 bug在 AnimationSet
实现中。
但是此动画将仅应用于一个 Activity 。如果您确实希望第一个 Activity 消失然后出现第二个 Activity ,您需要将动画分成两部分。第一部分将具有旋转
和缩放
直接动画,第二部分将具有反向旋转
和缩放
动画。因此基本上您只需将包含四个动画的 set
拆分为两个文件即可。然后你需要使用这两个动画来开始新的 Activity :
overridePendingTransition(R.anim.direct, R.anim.reversed);
关于添加反向动画时 Android 动画显示空白 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502364/