Я создал небольшую аппликацию (игра), которая повторно использует один и тот же набор изображений несколько раз. SO, я думал, что должен создать класс, который отвечает за загрузку всех разных изображений один раз, из которых я могу получить доступ к ним статически из других классов. Тем не менее, я считаю, что это может вызвать проблемы с сборщиком мусора, что заставляет мое приложение отставать всякий раз, когда выполняется GC. Вот что класс ImgLoader выглядит следующим образом:Загрузка растровых изображений и сохранение их статически альтернатив?
public class ImgLoader extends View {
public static Bitmap tree1;
public ImgLoader(Context context) {
super(context);
loadImgs();
}
public void loadImgs() {
System.gc(); // Manually Call GC
// TREES
tree1 = BitmapFactory.decodeResource(getResources(), R.drawable.tree);
tree1 = getResizedBitmap(tree1, MainActivity.height/2,
MainActivity.width/10);
}
public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height,
matrix, false);
return resizedBitmap;
}
public static Bitmap RotateBitmap(Bitmap source, float angle) {
Matrix matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(),
source.getHeight(), matrix, true);
}
}
Обратите внимание, я использую только один Bitmap для вопроса. По сути, когда я хочу использовать изображение в моем приложении, я говорю:
object.image = ImgLoader.tree1;
Что является альтернативой делать это, что это не так интенсивно использующих память?
Спасибо!
Я бы сделал это, но мне нужно каждый раз изменять их размер, чтобы подогнать их к экрану. – TastyLemons
Я все еще не понимаю, почему изменение размера растрового изображения требует статической ссылки на него? –
Я просто говорю, поэтому каждый раз, когда я загружаю его, мне нужно будет вызвать метод re-size с ним. Не будет ли это неэффективно? – TastyLemons