我想设置一个位图作为机器人壁纸,我有那部分想通了。但是图像总是太大,偏离中心并被裁剪。我试图将位图的大小调整为显示大小,但我仍然得到相同的结果是我的一些代码。
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);
任何人都可以帮我将壁纸图片大小正确地定位为壁纸吗?
谢谢!
答案 0 :(得分: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);
这不保留宽高比,但请告诉我它是如何进行的。