본문 바로가기
Programing/android

[android studio] 배경화면 이미지용량으로 인한 에러

by Benedictus711 2021. 10. 29.
728x90

이미지 크기나 용량이 너무 큰 배경화면 그림을 쓰다보니 처음에는 단순하게 생각해서

android:background=

식으로 썼더니 Error inflating class <unknown> 에러가 나왔다.

그래서 이미지를 화면 크기에 맞춰서 수정을 하여 넣을 수 있도록 코드상에서 아래처럼 처리를 하였다.

//화면크기를 구하기
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int width = size.x;
int height = size.y;

//배경이미지를 넣을 layout
LinearLayout layout = (LinearLayout)rootview.findViewById(R.id.fragment);

//이미지를 bitmap으로 받음
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg_img);
//bitmap이미지를 layout size에 맞게 크기 수정
Bitmap resize_bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
//bitmap 이미지를 배경화면으로 적용
layout.setBackgroundDrawable(new BitmapDrawable(getResources(), resize_bitmap));

해당 방식으로 처리를 하였더니
Failed to allocate a 575710932 byte allocation with 3937642 free bytes and 378MB until OOM
에러가 발생하였다.

이미지자체가 크다보니 조절하여도 에러가 발생하는듯 하였다.

큰 이미지를 처리할 수 있도록 AndroidManifest.xml 파일에 아래 옵션을 추가를 하였다.

android:hardwareAccelerated="false"
android:largeHeap="true"

그래도 소용이 없었다;;;;

결국 이미지를 이미지편집기를 열어 너무큰 이미지를 웹용으로 해상도를 낮추고 크기도 변경하여 
크기와 용량 모두 줄인 뒤에 정상적으로 동작하는 것을 확인하였다.

여러방법을 써도 결국 원본이미지의 용량이 너무 큰 이미지는 배경화면으로 안쓰는 것이 맞는거 같다.
앞으로도 적당히 조절하여 써야 하겠다.

728x90

댓글