【发布时间】:2012-12-29 16:58:25
【问题描述】:
所以这就是交易,我已经搜索了每个问题和在线链接,但没有一个有用。 我的初始屏幕有 120 帧 .jpg 格式的动画。我知道 jpeg 被转换为内存上的位图,所以这就是我得到 OutOfMemoryError 的原因。我制作动画的最大帧数是 10。有没有办法逐帧执行此操作,或者我应该尝试其他方法。这是我的代码:
final AnimationDrawable anim = new AnimationDrawable();
anim.setOneShot(true);
for (int i = 1; i <= 120; i++)
{
Drawable logo = getResources().getDrawable(getResources()
.getIdentifier("l"+i, "drawable", getPackageName()));
anim.addFrame(logo, 50);
if (i % 3 == 0)
{
System.gc();
}
}
ImageView myImageView = (ImageView) findViewById(R.id.SplashImageView);
myImageView.setBackgroundDrawable(anim);
myImageView.post(new Runnable()
{
public void run()
{
anim.start();
}
});
我已将 120 个 jpeg 放在带有“l”前缀的可绘制文件夹下(例如 l1、l2 等)。 我每 3 个 jpeg 进行一次垃圾收集,但这无济于事。
【问题讨论】:
-
你试过在 xml 中使用 Animation-List 吗?
-
是的...复制粘贴 120 次“几乎”相同的东西真的很痛苦。 (我很愚蠢,之前没有尝试过几张jpeg)
-
120 帧对于任何动画来说都太多了。
标签: android animation frame out-of-memory splash-screen