在定时循环中更改Imageview PNG

时间:2012-11-22 15:12:51

标签: android animation timer png

我有一个png序列,我想在imageview中显示。它有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

循环

结束动画......

然后关闭Activty。

所以问题是如何在Android上执行此操作?

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

任何帮助我指明正确方向的帮助都会受到谴责。

1 个答案:

答案 0 :(得分:0)

我最终找到了我正在寻找定时循环的解决方案,尽管它确实提出了一个关于我的帧速率要求的新问题,我已将其纳入一个新问题。

如果你只需要每70毫秒更新一次图像,那么这个解决方案似乎没有与AnimationDrawable相同的内存限制。

请参阅以下新问题:

750 frame transparent PNG animation in ImageView at 23fps