使位图适合屏幕作为壁纸

时间:2012-09-08 20:03:14

标签: android bitmap wallpaper

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

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);

任何人都可以帮我将壁纸图片大小正确地定位为壁纸吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。壁纸尺寸通过WallpaperManager.getDesiredMinimumHeightWallpaperManager.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);

这不保留宽高比,但请告诉我它是如何进行的。