2

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

这是只有第一部分存在并且工作正常时的 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>

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

4

1 回答 1

4

您无需复制动画即可实现反向效果。你可以使用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>

您需要同时设置for和repeatCount动画。不幸的是,由于实现中的错误,您不能直接在属性中使用它。repeatModescalerotatesetAnimationSet

但是这个动画将只应用于一个活动。如果您确实希望第一个活动消失,然后出现第二个活动,则需要将动画分成两部分。第一部分将有你的rotatescale直接的动画,第二部分将有反转rotatescale动画。所以基本上你只需要将你set的四个动画分成两个文件。然后你需要使用这两个动画来开始新的活动:

overridePendingTransition(R.anim.direct, R.anim.reversed);
于 2012-07-16T11:39:15.623 回答