安卓设置壁纸出现问题

5

很久以前我开发了一个壁纸切换器并发布了出去。过了一段时间,我开始收到评论说壁纸没有正确地调整大小。我在不同尺寸的模拟器上尝试了一下,它们是正确的。我正确地缩放了位图等等,但是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);

我也尝试了其他方法,但似乎没有帮助,即使之后检查重新调整大小的壁纸是否正确大小等等。

有什么想法吗?


我记得有一段时间读到过有关壁纸管理器尝试自动调整图像大小的内容...你可能想要寻找相关文章。 - Max
请参考此帖子:https://dev59.com/tnI-5IYBdhLWcg3wHUdB 了解壁纸的正确尺寸信息。 - kabuko
我有一个合适的网站,但正如Max所说,“壁纸管理器试图自动调整图像大小”。问题是,我能避免这种情况吗? - Ruuhkis
3个回答

0

0

我必须创建覆盖图像。

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

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

  3. 将您的墙纸覆盖在空白图像的中心。 并将覆盖视为墙纸。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接