2

我想设置一个位图作为机器人壁纸,我已经弄清楚了那部分。然而,图像总是太大、偏离中心并被裁剪。我试图将位图的大小调整为显示大小,但我仍然得到相同的结果,这是我的一些代码。

Display display = getWindowManager().getDefaultDisplay();

final int maxWidth = display.getWidth();
final int maxHeight = display.getHeight();

Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(img_url).getContent());     


    int imageHeight = bitmap.getHeight();
if ( imageHeight > maxHeight )
imageHeight = maxHeight;
int imageWidth = (imageHeight*bitmap.getWidth()) / bitmap.getHeight();
if ( imageWidth > maxWidth ) {
imageWidth = maxWidth;
imageHeight = (imageWidth*bitmap.getHeight()) / bitmap.getWidth();
}


Bitmap resizedBitmap = Bitmap.createScaledBitmap( bitmap, imageWidth, imageHeight, true);

    myWallpaperManager.setBitmap(resizedBitmap);

任何人都可以帮我将壁纸图像的大小和居中正确设置为壁纸吗?

谢谢!

4

1 回答 1

0

尝试这样的事情。壁纸尺寸通过WallpaperManager.getDesiredMinimumHeight和获取WallpaperManager.getDesiredMinimumWidth。如果其中任何一个是<= 0,它会请求默认显示的尺寸。

/* determine wallpaper dimensions */
final int w = myWallpaperManager.getDesiredMinimumWidth();
final int h = myWallpaperManager.getDesiredMinimumHeight();
final boolean need_w = w <= 0;
if (need_w || h <= 0) {
  final Rect rect = new Rect();
  getWindowManager().getDefaultDisplay().getRectSize(rect);
  if (need_w) {
    w = rect.width();
  } else {
    h = rect.height();
  }
}

/* create resized bitmap */
final Bitmap resized = Bitmap.createScaledBitmap(bitmap, w, h, false);

这不会保留纵横比,但告诉我它是如何进行的。

于 2012-09-08T20:12:52.893 回答