(android)设置正确尺寸的主屏幕壁纸

时间:2011-11-19 13:47:41

标签: android dimensions wallpaper homescreen

我正在构建一个应用程序,我想要更改壁纸。所以这是我的代码。 当用户设置壁纸时,我将路径保存到共享首选项。

Display display = getWindowManager().getDefaultDisplay();

SharedPreferences prefs = getBaseContext().getSharedPreferences(PREFS_NAME,0);
if (prefs.contains(d)) {
    Bitmap bitmapOrg = BitmapFactory.decodeFile(prefs.getString(d, ""));

    int newWidth = display.getWidth();
    int newHeight = display.getHeight();

    Bitmap resizedBitmap =Bitmap.createScaledBitmap(bitmapOrg, newWidth, newHeight, true);
    myWallpaperManager.setBitmap(resizedBitmap);
}

并且使用该代码我得到类似this的内容,而我想显示像this

这样的图片

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

好的,我发现了如何做到这一点。 首先,我创建一个新的位图

newBmp = Bitmap.createBitmap(display.getWidth(), display.getHeight(), Bitmap.Config.ARGB_8888);

然后重新调整原始位图:

Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmapOrg, scaleWidth, scaleHeight, false);

然后我调用叠加来将两个图像一起绘制。第一个图像具有显示尺寸,第二个图像具有图像。

vate Bitmap overlay(Bitmap bmp1, Bitmap bmp2, int left, int imgsize) {
   Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
   Canvas canvas = new Canvas(bmOverlay);
   canvas.drawBitmap(bmp1, new Matrix(), null);
   canvas.drawBitmap(bmp2, left-(imgsize/2), 15, null);
   return bmOverlay;
}

最后:

myWallpaperManager.setBitmap(newB);