アプリで深刻なパフォーマンスの問題が発生しました。ビットマップをロードすると、大量のメモリが消費されるようです。
すべての Android デバイスのビットマップ サイズを含むドローアブル フォルダーがあります。これらのビットマップは高品質です。基本的に、各ビットマップを調べて、サイズに応じてデバイス用に新しいビットマップを作成します。(正しい向きとあらゆるデバイスをサポートしているため、このようにすることにしました)。動作しますが、多くのメモリを消費し、ロードに時間がかかります。誰でも次のコードについて提案できますか。
public Bitmap getBitmapSized(String name, int percentage, int screen_dimention, int frames, int rows, Object params)
{
if(name != "null")
{
_tempInt = _context.getResources().getIdentifier(name, "drawable", _context.getPackageName());
_tempBitmap = (BitmapFactory.decodeResource(_context.getResources(), _tempInt, _BM_options_temp));
}
else
{
_tempBitmap = (Bitmap) params;
}
_bmWidth = _tempBitmap.getWidth() / frames;
_bmHeight = _tempBitmap.getHeight() / rows;
_newWidth = (screen_dimention / 100.0f) * percentage;
_newHeight = (_newWidth / _bmWidth) * _bmHeight;
//Round up to closet factor of total frames (Stops juddering within animation)
_newWidth = _newWidth * frames;
//Output the created item
/*
Log.w(name, "Item");
Log.w(Integer.toString((int)_newWidth), "new width");
Log.w(Integer.toString((int)_newHeight), "new height");
*/
//Create new item and recycle bitmap
Bitmap newBitmap = Bitmap.createScaledBitmap(_tempBitmap, (int)_newWidth, (int)_newHeight, false);
_tempBitmap.recycle();
return newBitmap;
}