我目前正在Android中制作一个小应用程序。 我希望有两个ImageViews,当我点击屏幕上的不同按钮时,它们会改变动画。
首先是一个示例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;
的onResume:
_imgView1.setBackgroundResource(R.drawable.anim_main_idle);
_aniDrawable1 = (AnimationDrawable) _imgView1.getBackground();
_aniDrawable1.start();
到目前为止这是有效的,并且没有问题。小精灵做它的跳汰机。 然而,我一次对两个imageViews做这个,我一直在尝试在XML中为每个添加更多/不同的“框架”。但是,在VM崩溃之前我不必添加很多帧,因为内存不足。
在我看来,好像它正在从XML中提到的每个drawable中生成一个bmp,然后当我调用“setBackgroundResource”时将它绑定在VM memmory中。
我的问题:有没有办法减少记忆密集度?我可以更改.setBackgroundResource如何从XML保存数据吗?像我的xml中的那些7-8个不同的图片足以打破16MB的VM。 我不想要太多,我只想要一些并排运行的动画帧,当我点击按钮时会改变,但是如果AnimationDrawable在VM-memmory中吃掉这么多,那么这似乎是不可能的。
提示?想法?替代?
答案 0 :(得分:0)
请参阅此文章 - Loading large images
特别注意“将缩小版本加载到内存中”部分
答案 1 :(得分:0)
尝试将您的图片资源保存在/drawable-nodpi
Android可能会将资源假设为/drawable-mdpi
作为默认值。