2

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

首先是一个示例 xml:(drawables 是 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();

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

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

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

提示?想法?备择方案?

4

2 回答 2

0

参考这篇文章 -加载大图像

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

于 2013-05-06T20:54:37.353 回答
0

尝试将您的图像资源保留在/drawable-nodpi Android 中可能会将资源假定/drawable-mdpi为默认值。

于 2016-02-13T11:43:34.723 回答