次のような 14 個の Bitmap オブジェクトを作成します。
bmp[0]=BitmapFactory.decodeResource(getResources(), R.drawable.a0000);
bmp[1]=BitmapFactory.decodeResource(getResources(), R.drawable.a0001);
bmp[2]=BitmapFactory.decodeResource(getResources(), R.drawable.a0002);
bmp[3]=BitmapFactory.decodeResource(getResources(), R.drawable.a0003);
bmp[4]=BitmapFactory.decodeResource(getResources(), R.drawable.a0004);
bmp[5]=BitmapFactory.decodeResource(getResources(), R.drawable.a0005);
bmp[6]=BitmapFactory.decodeResource(getResources(), R.drawable.a0006);
bmp[7]=BitmapFactory.decodeResource(getResources(), R.drawable.a0007);
bmp[8]=BitmapFactory.decodeResource(getResources(), R.drawable.a0008);
bmp[9]=BitmapFactory.decodeResource(getResources(), R.drawable.a0009);
bmp[10]=BitmapFactory.decodeResource(getResources(), R.drawable.a0010);
bmp[11]=BitmapFactory.decodeResource(getResources(), R.drawable.a0011);
bmp[12]=BitmapFactory.decodeResource(getResources(), R.drawable.a0012);
bmp[13]=BitmapFactory.decodeResource(getResources(), R.drawable.a0013);
これらのビットマップは背景のアニメーションを作成するために使用され、リソースは 320x480 ピクセルの 14 個の jpj 画像です。カスタム ビューを作成し、onDraw メソッドでビットマップを呼び出します。次に、画像と同じ解像度の携帯電話でアプリをテストし、スムーズに実行してから、より大きな解像度 (1280x720 など) のタブレットでアプリを使用しようとしましたが、背景が画面全体に収まりません。 、そのため、デバイスの解像度に基づいて異なる解像度の新しいビットマップを作成して画面全体を埋める方法を調査したところ、結果は次のようになりました。
newWidth= context.getResources().getDisplayMetrics().widthPixels;
newHeight= context.getResources().getDisplayMetrics().heightPixels;
int contador=0;
do{
bmp[contador]= Bitmap.createScaledBitmap(bmp[contador], newWidth, newHeight,true);
contador++;
}while(contador<13);
次に、これらの行を onDraw メソッドに追加するだけです。
canvas.drawBitmap(bmp[i], 0, 0, null);
i++;
携帯電話でアプリをテストすると問題なく動作しますが、タブレットでテストすると「ビットマップ サイズが VM の予算を超えています」というエラーが表示されます。 14 個の bmp Bitmap オブジェクトを作成し、bmp2 というビットマップの 2 番目の配列を作成し、必要なときにのみビットマップを割り当ててから、onDraw メソッドで次のようにクリアします。
bmp2[i]= Bitmap.createScaledBitmap(bmp[i], newWidth, newHeight,true);
canvas.drawBitmap(bmp2[i], 0, 0, null);
bmp2[i].recycle();
bmp2[i]=null;
タブレットと携帯電話で動作しますが、パフォーマンスが非常に悪いのは、(onDraw メソッドで) リアルタイムで画像を割り当てるためだと思いますが、リサイクル メソッドを使用して bmp2 を再度割り当てない場合はありません。新しいbmp2...
最後に、私の本当の質問は次のとおりです。画像を表示した後にメモリをクリアし、再び必要になったときに使用できるようにするにはどうすればよいですか。ありがとう!