Android视图动画问题:根据事件启动动画

发布于 2024-11-08 16:31:12 字数 796 浏览 0 评论 0原文

我有几个 ImageViews,每个都有一个无限跳动的 ScaleAnimation 和三个对我来说没有意义的尝试。

  • 如果我在动画膨胀后立即设置动画,则动画将完美运行。这也告诉我创建动画的辅助函数(在所有三种情况下使用)工作正常。
  • 如果我立即设置动画,但开始时间为 Long.MAX,然后调用 icon.getAnimation().start(),动画会开始,但速度会变慢比应有的速度要快,并且比例不是我设置的。无论我将动画比例和持续时间参数设置为什么,它看起来总是一样的,与之前的情况不同。
  • 如果我使用新的 Animation 对象调用 icon.startAnimation(..) ,我不会得到任何动画。深入研究 Android 源代码,startAnimation(..) 调用 invalidate(),这与 setAnimation(..) 不同。如果我调用 icon.getAnimation().start() ,然后调用 icon.invalidate() ,我会得到相同(缺乏)的行为。这向我暗示无效会以某种方式破坏动画。

那么,考虑到上述所有情况,这是我可能犯下的错误的症状吗?有什么我没有描述但我应该做的事情吗?

最后,我尝试使用相对和绝对指定的缩放枢轴进行此操作,认为相对于 View.invalidate()Animation.reset( )

I have several ImageViews each with an indefinitely throbbing ScaleAnimation and three attempts that don't make sense to me.

  • If I set the animation immediately after inflating the animation the animation runs perfectly. This also tells me my helper function to create the animation (used in all three cases) is working fine.
  • If I set the animation immediately, but with a start time of Long.MAX, and later call icon.getAnimation().start(), that animation starts but the speed is faster than it should be and the scale is not what I set. No matter what I set the animation scale and duration parameters to, it always looks the same, unlike the previous case.
  • If I call icon.startAnimation(..) with a new Animation object, I get no animation. Digging into Android source, startAnimation(..) calls invalidate(), unlike setAnimation(..). If I call icon.getAnimation().start() followed by icon.invalidate() I get the same (lack of) behavior. This hints to me that the invalidate somehow breaks the animation.

So, given all of the above, is this symptomatic of a mistake I might have made? Is there something I didn't describe that I should be doing?

Finally, I've tried this with both a scale pivot specified both relatively and aboslutely, thinking there might be a bug in event order with respect to View.invalidate() and Animation.reset().

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风柔一江水 2024-11-15 16:31:12

很多人都在动画方面遇到问题。在 Honeycomb 之前使用动画处理任何东西都是一件非常痛苦的事情。

我建议下载 NineOldAndroids 库并将其用作导入,这样您就可以在所有版本的 android 上使用 Honeycomb 动画 API (甚至高达 1.0)。

A lot of people are having problems with animation. Working with animation on anything before Honeycomb is a real pain.

I recommend downloading the NineOldAndroids library and using it as imports, that way you can use the Honeycomb animation API on all versions of android (even up to 1.0).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文