gpt4 book ai didi

java - 来自 xml 的 SetbackgroundResource 使 VM 崩溃,内存不足。我该如何优化这个?

转载 作者:行者123 更新时间:2023-11-29 09:02:48 24 4
gpt4 key购买 nike

我目前正在 Android 中制作一个小应用程序。我希望有两个 ImageView,当我点击屏幕上的不同按钮时它们会改变它们的动画。

首先是一个示例 xml:(可绘制对象是 250x350y .png 文件)

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/main_idle_kf1" android:duration="500" />
<item android:drawable="@drawable/main_idle_kf2" android:duration="500" />
<item android:drawable="@drawable/main_idle_kf3" android:duration="500" />
<item android:drawable="@drawable/main_idle_kf2" android:duration="500" />
</animation-list>

我的代码示例

ImageView _imgView1; //declared in oncreate = ((ImageView) findViewById... etc)
AnimationDrawable _aniDrawable1;

恢复时:

_imgView1.setBackgroundResource(R.drawable.anim_main_idle);
_aniDrawable1 = (AnimationDrawable) _imgView1.getBackground();
_aniDrawable1.start();

到目前为止,这是可行的,没有任何问题。小 Sprite 做它的夹具。但是,我一次对两个 imageView 执行此操作,并且我一直在尝试在 XML 中为每个添加更多/不同的“框架”。但是,在 VM 因内存不足而崩溃之前,我不必添加很多帧。

在我看来,它好像是从 XML 中提到的每个可绘制对象中生成一个 bmp,然后在我调用“setBackgroundResource”时将其绑定(bind)到 VM 内存中。

我的问题:有什么办法可以减少内存占用吗?我可以更改 .setBackgroundResource 从 XML 保存数据的方式吗? 7-8 张不同的图片(如我的 xml 中的图片)足以破坏 16MB 的虚拟机。我想要的不多,我只想要几帧并排运行的动画,当我单击按钮时它们会发生变化,但如果 AnimationDrawable 从 VM 内存中吃掉这么多,这似乎几乎是不可能的。

提示?想法?替代方案?

最佳答案

引用这篇文章 - Loading large images

特别查看“将缩小版本加载到内存中”部分

关于java - 来自 xml 的 SetbackgroundResource 使 VM 崩溃,内存不足。我该如何优化这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com