2

我有一个要在图像视图中显示的 png 序列。它有 745 帧,每帧最大 44kb,并希望以 23 fps 的速度播放。有些帧与前一帧不同或为空白,因此我可以跳过更新帧 100-243 和 340-400 等。所以磁盘上的总大小最终约为 9mb(我只需要使用 745 帧中的 249 个图像,因为动画中有一些暂停,有时动画对象会离开屏幕)。所有图像均为 320 x 480,并按比例缩放以适合屏幕。

在播放时,我需要在不停止动画的情况下沿途做一些其他的事情。我是 Java 新手。在伪代码中,我想做这样的事情:

活动加载...

对于 x = 1 到 745

if exsists("image" & x) then 
    imageview setbackground("image" & x) (change this every 35ms)

switch (x)
case: 10 then call a function at frame 10
case: 100 then call a function that vibrates 0.5sec at frame  100
case: 200 then call different function at frame 200

环形

结束动画...

然后关闭活动。

所以问题是如何在Android上做到这一点?

我尝试使用 AnimationDrawable 和 animationlist.xml 数组,但如果我有超过 40 帧,则会出现模拟器 VM 错误。我可以在实际设备上运行更多。

任何帮助我指出正确方向的帮助都将不胜感激。

4

1 回答 1

0

我最终找到了我正在寻找 Timed Loop 的解决方案,尽管它确实提出了一个关于我的帧速率要求的新问题,我已将其包含在一个新问题中。

如果您只需要每 70 毫秒更新一次图像,那么此解决方案似乎可以在没有与 AnimationDrawable 相同的内存限制的情况下工作。

在以下位置查看新问题:

ImageView 中 750 帧透明 PNG 动画,23fps

于 2012-11-23T11:53:22.057 回答