我试图为每个主屏幕设置不同的壁纸,但是出现OutOfMemory问题。我有5个位图,我试图叠加在5倍于显示宽度的壁纸位图上。使用下面的代码,我得到了OOM。该问题似乎是创建大型壁纸位图的第一行代码。我的问题是,是否有办法做到这一点(即某种方式占用较少的内存,或者分配更多的内存??)。谢谢!Android - 为每个主屏幕设置不同的位图壁纸 - 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 2010-07-23 12:18:45
嗯,我正在测试Nexus One屏幕尺寸为480x800。首先我创建的壁纸位图必须是5倍大(2400x800)。然后,对于每个主屏幕,我将在尺寸480x800的Canvas上绘制另一个位图。 – timothyjc 2010-07-23 12:41:27
displayWidth和displayHeight的值是什么?他们是内在的宽度和高度吗? (myBitmap.getIntrinsicWidth(),myBitmap.getIntrinsicHeight();) – Jorgesys 2010-07-23 18:04:11