私は現在、Androidで小さなアプリケーションを作成しています。私の願いは、画面上の異なるボタンをクリックしたときにアニメーションを変更する 2 つの 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();
これまでのところ、これは機能しており、問題はありません。小さなスプライトはジグです。ただし、一度に2つのimageViewに対してこれを行っており、それぞれのXMLにさらに/異なる「フレーム」を追加しようとしています。ただし、メモリ不足のために VM がクラッシュする前に、多くのフレームを追加する必要はありません。
XMLで言及されている各ドローアブルからbmpを作成し、「setBackgroundResource」を呼び出すと、これをVMメモリにバインドしているように思えます。
私の質問: メモリの負荷を軽減する方法はありますか? .setBackgroundResource が XML からデータを保存する方法を変更できますか? 16MB の VM を壊すには、私の xml にあるような 7 ~ 8 枚の異なる写真で十分です。ボタンをクリックすると変化するアニメーションのいくつかのフレームを並べて実行したいだけですが、AnimationDrawableがVMメモリを大量に消費する場合、それはほとんど不可能に思えます。
ヒント?アイデア?代替案?