모든 홈 화면마다 다른 배경 화면을 설정하려고하지만 OutOfMemory 문제가 발생합니다. 나는 디스플레이 폭의 5 배인 배경 화면 비트 맵에 오버레이하려고하는 5 비트 맵을 가지고 있습니다. 아래 코드를 사용하여 OOM을 얻습니다. 문제는 큰 벽지 비트 맵을 만드는 코드의 첫 번째 줄인 것 같습니다. 내 질문은이를 수행 할 수있는 방법이 있는지 (즉, 더 적은 메모리를 사용하는 방법 또는 더 많은 메모리를 할당하는 방법) 여부입니다. 감사!안드로이드 - 모든 홈 화면을위한 다른 비트 맵 벽지 - OutOfMemory
Bitmap wallpaper = Bitmap.createBitmap(displayWidth*5,displayHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(wallpaper);
Uri data = getIntent().getData();
Bitmap bmp = getBitmap(data, imagePosition, displayWidth, displayHeight);
canvas.drawBitmap(bmp, 0, 0,null);
WallpaperManager wallpaperManager = (WallpaperManager) SetterActivity.this.getSystemService(Context.WALLPAPER_SERVICE);
wallpaperManager.setBitmap(wallpaper);
wallpaperManager.suggestDesiredDimensions(bmp.getWidth()*2, bmp.getHeight());
비트 맵의 크기는 얼마입니까? – Sephy
글자 크기 480x800의 Nexus One을 테스트 중입니다. 먼저 5 배 (2400x800) 여야하는 배경 화면 비트 맵을 만듭니다. 그런 다음 모든 홈 화면에서 크기 480x800 크기의 캔버스에 다른 비트 맵을 그립니다. – timothyjc
displayWidth 및 displayHeight의 값은 무엇입니까? 그것들은 본질적인 너비와 높이입니까? (myBitmap.getIntrinsicWidth(), myBitmap.getIntrinsicHeight();) – Jorgesys