添加反向动画时,Android动画显示空白视图

时间:2012-07-16 10:21:04

标签: android android-animation

我通过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>

所以请你告诉我哪里出错......

1 个答案:

答案 0 :(得分: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>

您需要为repeatCountrepeatMode动画设置scalerotate。很遗憾,您无法直接在set实施中AnimationSet bug属性中直接使用它。

但此动画仅适用于一项活动。如果您确实希望第一个活动消失,然后显示第二个活动,则需要将动画拆分为两个部分。第一部分将包含rotatescale直接动画,第二部分将反转rotatescale动画。所以基本上只需要将set四个动画分成两个文件。然后你需要使用这两个动画来开始新的活动:

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