1

我制作了一个应用程序,它会触发不同的小动画,例如坠落的旋转星或类似从下到上浮动的文本,在表面视图上使用画布进行动画处理

一旦被触发,它们都是不变的,所以我计划了 2 种方法,1 是一个处理所有动画的大线程,每个动画 1 后更新 1

或为每种动画(例如流星)设置自己的线程,并且在每个给定点,主要活动都可以在其中一个线程上执行命令,创建他并启动,然后忘记他,让他在后台运行,并且在动画结束时该线程将自行结束。

所以我不必担心存储每个触发的线程等,因为我不知道在给定时间可以启动多少个线程。

那么触发随机的小短线程或有1个大线程来处理这一切会更有效吗?它会更顺利更好地工作吗?

动画只是为了视觉魅力而没有做任何其他事情,它也不会与其他动画交互,它只是开始、循环、结束。

我希望你明白:\

4

2 回答 2

2

您可能想要一个SurfaceView用一个线程处理您的所有绘图。每个动画有一个线程似乎过于复杂。您当然可以为每种动画类型设置一个方法renderStars(),例如,renderText()等,只要您的一个动画线程渲染,就会调用这些方法。

推荐阅读:

  • SurfaceView文档
  • Canvas and Drawables API Guide - 我已经链接到“ On a SurfaceView”部分,但您可能应该阅读大部分文档。
  • Lunar Lander 示例应用程序- 在 Google 最近修改了他们的开发者网站之后,在线代码目前是 404-ing,但是这个链接显示了在 SDK 管理器中的哪里可以找到代码。
于 2012-07-05T06:57:29.393 回答
0

在动画期间,您将不得不更新您的 UI,UI Thread因为您不能使用不同的线程来运行动画。但是,对于密集动画,您必须使用Gaming Engine或编写自己的Game Thread,这将首先根据动画公式更新对象的数据,然后在 上绘制它们UI thread

于 2012-07-04T19:39:05.870 回答