Android设置壁纸出错了

所以我很久以前就开发了壁纸更换器并将其发布。 过了一会儿,我开始收到评论壁纸没有正确resize。 我也尝试了不同大小的鸸and,他们是对的。 我正确地缩放位图等但不知何故android往往会重新缩放壁纸甚至更大! 有办法避免吗? 我的代码:

Display display = parent.getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); Bitmap scaled = Bitmap.createScaledBitmap(wallpaper, width, height, true); WallpaperManager wm = WallpaperManager.getInstance(getContext()); wm.setBitmap(scaled); 

我一直在尝试其他方式,但似乎没有任何帮助,即使我后来检查重新调整的壁纸是否正确大小等:(任何想法?

我想你可以使用WallpaperManager.getDesiredMinimumWidth()和WallpaperManager.getDesiredMinimumHeight()指定的大小来调整壁纸的大小,而不是显示大小。 这样,即使是自定义家庭应用程序(可能由设备制造商和/或服务提供商设置的那些)设置的要求也将受到尊重,这意味着您的应用程序具有(更大)更大的兼容性。

我有同样的问题,resize壁纸后有相同的大小,但不同的分辨率。

在我的情况下,代码解决了问题:

 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels; int width = metrics.widthPixels; Bitmap bitmap = Bitmap .createScaledBitmap(whatever, width, height, true); 

我不得不创建叠加图像。

  1. 创建一个大小为WallpaperManager.getDesiredMinimumWidth()的空白图像x WallpaperManager.getDesiredMinimumHeight()

  2. 使用, Display display = getWindowManager().getDefaultDisplay();将位图大小调整为屏幕大小Display display = getWindowManager().getDefaultDisplay(); bmp = Bitmap.createScaledBitmap(bmp, display.getWidth(), display.getHeight(), false);

  3. 在空白图像的中心叠加您的壁纸。 并将Overlay设置为壁纸。