我目前正在 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 内存中吃掉这么多,这似乎几乎是不可能的。
提示?想法?备择方案?