2013-08-28 67 views
1

我正在尝试改变系统壁纸的应用程序。在我的代码中,我得到了一个具有所需最小尺寸的图像(来自WallpaperManager)。例如在Nexus One上,所需的最小尺寸为884x800。当我得到我的图像,并将其设置为墙纸时,它会自动“左对齐”,以便我只能看到884x800图像的左侧(Nexus One的屏幕分辨率为480x800)。中心Android壁纸

有没有一种方法可以将壁纸设置为“居中”?

我设置的墙纸是这样的:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 

try { 
    wallpaperManager.setBitmap(bitmap); 
} catch (IOException e) { 
    Log.e("Error", e.toString()); 
} 

注:如果我为480x800的它吹起来的形象,所以我只能看到左上角当它是墙纸。

这里是一个形象,是884x800的例子:

这里是什么样子时,我将其设置为壁纸为例:

下面是我使用480x800图像时的外观示例:

回答

0

您是否尝试在虚拟主屏幕之间切换?你不是在最左边的虚拟主屏幕吗?

0

我的解决办法

在我的屏幕尺寸(480×800的Nexus之一)中的图像,然后复制它变成一个位图,这是所希望的尺寸(884x800的Nexus之一)的端部。

//Getting the image 
Display display = getWindowManager().getDefaultDisplay(); 
     screenSize = new Point(); 
display.getSize(screenSize); 
new LoadImageTask(screenSize.x, screenSize.y, this).execute(); 

...

// In the response listener 
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Point desiredSize = new Point(
     wallpaperManager.getDesiredMinimumWidth(), 
     wallpaperManager.getDesiredMinimumHeight()); 

Bitmap wallpaper = Bitmap.createBitmap(desiredSize.x, desiredSize.y, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(wallpaper); 
canvas.drawBitmap(bitmap, 0, 0, null); 

try { 
    wallpaperManager.setBitmap(wallpaper); 
} catch (IOException e) { 
    Log.e("Error", e.toString()); 
} 

它适用于所有的虚拟屏幕