ゲーム用の背景画像といくつかの小さな画像を読み込み、キャンバスに配置して、より小さなオーバーレイされた画像(移動、回転など)キャンバス上で大きな画像を操作してアスペクト比を維持すると、メモリ不足の問題が発生する
アスペクト比(例:5:3)を維持するために、画像をビットマップとして読み込んで自分自身のサイズを変更しようとしました。アイデアは、キャンバスの幅/高さに応じて背景の切り抜き/レターボックス化を行い、小さな画像のサイズの正しい比率を維持することでした。
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), resourceImg);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg2, 0, 0, width, height, matrix, true);
タブレット/携帯電話に対応するために、私は1600x1000と200kbの背景PNG背景画像を持っています。
しかし、ビットマップが1600x1000x4byte = 6.4MBのRAMとそれ以上のサイズに変更しようとすると、メモリ不足の問題が発生しています。
私はcanvas.setBackgroundResource
SceneCanvas sceneCanvas = (SceneCanvas) findViewById(R.id.the_canvas);
sceneCanvas.setBackgroundResource(R.drawable.my_scene_1600x900);
それが画面いっぱいとアスペクトを維持しない以外これは、うまく機能を使用するように変更することを決めた は(私はこれらの問題が発生した瞬間に、エミュレータを使用しています)比。
アスペクト比を維持する背景を設定する方法はありますか?または、間違ったルートを完全に無くしただけで、ImageViewsを使用してOutOfMemoryの問題を避けるためにキャンバスにレンダリングする必要があります。