Android设置壁纸出错了

时间:2012-01-16 20:38:47

标签: java android bitmap resize wallpaper

所以我很久以前就开发了壁纸更换器并将其发布了。过了一会儿,我开始收到评论壁纸没有正确调整大小。我也尝试了不同大小的鸸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);

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int height = metrics.heightPixels;
        int width = metrics.widthPixels;

        Bitmap bitmap = Bitmap
                .createScaledBitmap(whatever, width, height, true);

答案 2 :(得分:0)

我必须创建叠加图像。

  1. 制作尺寸为WallpaperManager.getDesiredMinimumWidth() x WallpaperManager.getDesiredMinimumHeight()

    的空白图片
  2. 使用Display display = getWindowManager().getDefaultDisplay(); bmp = Bitmap.createScaledBitmap(bmp, display.getWidth(), display.getHeight(), false);

  3. 将位图大小调整为屏幕尺寸
  4. 在空白图像中心叠加壁纸。并将Overlay设置为壁纸。