【问题标题】:Android animation shows blank view when reverse animation added添加反向动画时,Android动画显示空白视图
【发布时间】:2012-07-16 10:21:04
【问题描述】:

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

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

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

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

    您需要为scalerotate 动画设置repeatCountrepeatMode。不幸的是,由于bugAnimationSet 实现中,您不能直接在set 属性中使用它。

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

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

    【讨论】:

    • Andrei 感谢您的回答第一个反向建议对我不起作用,因为我想要镜像类型的反向意味着镜像效果,其次我知道在 overridePendingTransition 我们提供单独的文件,但我正在组合动画通过应用单个元素来查看完整的流程......所以在我的问题中我没有问其他方法来做我想做的事情我问为什么我的代码不起作用?以及我的代码中的问题在哪里..
    • 您的 xml 没问题,但 AnimationSet 中存在错误。 android:startOffset 在 xml 中不能正常工作。你得到一个空白屏幕,因为所有 4 个动画同时运行。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多