【发布时间】:2011-09-02 10:00:51
【问题描述】:
我非常接近让“硬币翻转”动画工作,但由于当前动画系统中的限制(错误?) - 我无法找到一种方法来显示硬币在空中翻转的两面.
例如,我有以下动画 .XML:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:repeatCount="17"
android:repeatMode="reverse"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0" android:toXScale="1.0"
android:fromYScale="1.0" android:toYScale="0.0"
android:pivotX="50%" android:pivotY="50%"
android:fillEnabled="true"
android:fillAfter="true"
android:duration="60"
/>
<scale
android:repeatCount="1"
android:repeatMode="reverse"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0" android:toXScale="2.0"
android:fromYScale="1.0" android:toYScale="2.0"
android:pivotX="50%" android:pivotY="50%"
android:fillEnabled="true"
android:fillAfter="true"
android:duration="800"
/>
<translate
android:repeatCount="1"
android:repeatMode="reverse"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%"
android:toXDelta="0%"
android:fromYDelta="0%"
android:toYDelta="-150%"
android:fillEnabled="true"
android:fillAfter="true"
android:duration="800"
/>
</set>
这通过在 Y 轴上缩放硬币并在循环中反转它来“伪造”翻转动画。结合这一点,有一个比例可以使整体动画更大,同时也可以上下平移。但它只会显示硬币的一面。
我尝试让其中的两个动画,硬币的每一面,同时运行,但由于 REPEATCOUNT 在应用于 AnimationSet 时不起作用,我无法找到错开它们的方法。否则我可以在一个动画之后(和另一个动画之前)引入某种延迟,以便它们交替出现,给人一种抛硬币的错觉。
有谁知道我可以通过什么方式调整它以获得所需的结果?
我曾想过放弃并制作基于帧的动画(将翻转预渲染为帧),但您似乎无法混合使用 Frame 和 Tween 动画,所以我会失去翻转“高度”和“距离”效果。
(我有另一个关于硬币落地的问题 - 例如最终结果是随机的,但我希望我能在最后切换实际结果?)
提前致谢!
【问题讨论】: