我非常接近“硬币翻转”动画,但是由于当前动画系统的局限性(错误?) - 我无法找到一种方法来显示硬币在空中翻转的两面
例如,我有以下动画.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&amp;补间动画,所以我会失去翻转“高度”和“距离”效果。
(关于硬币着陆我还有另一个问题 - 例如最终结果是随机的,但我希望我能在最后切换实际结果吗?)
提前致谢!
答案 0 :(得分:2)
我自己也在寻找类似的东西,即使图像缩放,看起来图像视图也越来越靠近屏幕了。
我将你的动画与这个解决方案结合起来,完全按照自己的意愿行事,而且相当轻量级,不需要多个视图。
https://github.com/Lojko/Booty/blob/master/src/game/booty/BootyGameActivity.java
更改了原始链接的位置:http://www.jasoncavett.com/2011/05/changing-images-during-an-android-animation/#comments
请参阅FlipCoin类及其使用方法,我已经存在动画(以与链接详细相同的方式创建)
答案 1 :(得分:1)
答案 2 :(得分:0)
我最近想为项目实现这样的东西。我终于提出了一个解决方案,结果很好。希望它可以帮助那些试图获得相同动画的人。
我将结果上传为gist on GitHub。
预览动画click here。
对于完整的android studio项目,请访问我们的CoinToss存储库。