【问题标题】:How to dynamically adjust the duration/speed of a Tween Animation in Android如何在 Android 中动态调整 Tween 动画的持续时间/速度
【发布时间】:2011-04-06 21:18:09
【问题描述】:

假设我有一个 android 应用程序,在该应用程序中,我想为一个“L”形的球图形制作动画。这将需要我定义一个 Tween 动画,在其中创建一个动画 xml 文件(如下所示)并将其应用于其中包含球图形的视图。

<translate>
Ydelta = 20;
offset = 0;
duration = 100;
</translate>

<translate>
Xdelta = 20;
offset = 100;
duration = 100;
</translate>

现在假设我想动态控制这个动画的速度,这样随着时间的推移,L 动画会越来越快。如何动态控制整个动画的速度?我试过 myAnimation.setDuration($var) 但这似乎只适用于动画的第一部分。任何偏移量大于 0 的动画部分都不会通过 setDuration() 方法调整其持续时间。

有人知道我可以统一缩放多场景动画的方法吗?

谢谢

ps - 我知道有一些方法可以解决这个问题,例如创建 2 部分动画并独立缩放每个部分或使用代码生成动画,但如果有更简单的解决方案,那将是首选。

【问题讨论】:

    标签: android animation dynamic duration


    【解决方案1】:

    我自己解决了这个问题。要缩放整个动画,您需要以编程方式创建动画,并在使用 setDuration(); 设置动画持续时间时向其传递一个变量,而不是在 xml 中进行硬编码。

    现在每次调用动画时,我都会将动画持续时间 mAnimDuration 传递给它,然后即时创建新的时间缩放动画。您会注意到动画第二部分的偏移量设置为动画第一部分的持续时间。

    这是我的代码中的一个示例:

    AnimationSet rootSet = new AnimationSet(true); TranslateAnimation transX = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0); transX.setStartOffset(0); transX.setDuration(mAnimDuration/2); rootSet.addAnimation(transX); TranslateAnimation transX2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0); transX2.setStartOffset(mAnimDuration/2); transX2.setDuration(mAnimDuration/2); rootSet.addAnimation(transX2);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2012-12-12
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多