1

各レイヤーのオンとオフを切り替えることができるインタラクティブなマップを形成するには、20 以上の画像を重ねて読み込む必要があります。

これにa を使用することにしましたLayerDrawableが、OutOfMemoryError が発生し続けます。Large Heap を true に設定した後でも、約 8 個の画像を読み込むことができますが、それ以上になるとエラーがスローされます。

LayerDrawableそのエラーを発生させずに多くの画像をにロードする方法はありますか、またはこれを行うためのより良い方法はありますか?

4

3 に答える 3

0

そのような何か?

Resources r = getResources();
Drawable[] layers = new Drawable[20];
layers[0] = r.getDrawable(R.drawable.01);
layers[1] = r.getDrawable(R.drawable.02);
etc[...]
LayerDrawable layerDrawable = new LayerDrawable(layers);
testimage.setImageDrawable(layerDrawable);
于 2013-06-24T16:09:14.933 に答える
0

大きなヒープ フラグを使用すると、ハニカム以上でのみ機能し、取得できるメモリ量については何も約束されません。今までと同じ金額を受け取ることができます。

多くの高品質の画像をロードする場合は、画像を画面の最大サイズまで縮小するか、Java 以外のソリューションを使用します (たとえば、openGL/andengine/lbgdx を使用してコンテンツを表示します)。

Java ソリューションを選択した場合、アプリのデバイスのヒープの最小値は 16MB であることを知っておく必要があります。ある種のAndroid APIから始めてもっと大きくなればいいのにと思いますが、これはあなたが想定できるものではありません(ただし、そのような制限のある新しいデバイスはまだ見たことがありません)。

一般に、アプリには画面全体のビットマップを保持するのに十分なメモリが常にあると想定できます。常にこれよりも 2 倍になると考えるかもしれませんが、それだけです。

ネイティブの他のソリューションを選択した場合、デバイスの RAM メモリにのみ制限されますが、メモリの解放は自分で行う必要があります。

どのソリューションを選択しても、デバイスのメモリ容量に制限があることに注意してください。

于 2013-06-25T17:38:10.620 に答える