Android 设置壁纸遇到的一点坑

最近闲来无事, 准备学学android开发, 思来想去决定就写个pixiv日榜的壁纸设置app吧, 纯列表展示, 应该难度不大, 结果不出所料, 最难的果然还是壁纸设置方面, 踩了一点坑, 现在总结一下

设置壁纸, 图片被缩放(一般是被放大, 谁会用一张小图去做壁纸呢)

这种情况是因为没有对壁纸进行处理导致的, 需要提前进行壁纸缩放

设置壁纸过后, 某些手机(比如诺基亚), 会变成滚动壁纸, 带有黑边(可能是错误的缩放导致的)

使用wallpaperManager.getDesiredMinimumHeight()的高度, 配合设备的宽度对图片进行缩放, 使图片宽度和屏幕宽度保持一致, 让图片无法滚动

设置壁纸过后, 可能出现左右白边的问题

这种情况一般是因为图片宽高比例过大, 图片太高, 在按照高度缩放过后, 图片宽度小于屏幕宽度导致的. 一般只需要在计算缩放比例过后, 使用比例去计算缩放过后的图片宽度, 如果宽度小于屏幕宽度, 则对缩放比例进行调整即可

    //bitmap就是你自己需要设置的图片数据
    //wh为设备的宽高信息wh[0]=width, wh[1]=height, 示例代码只用到了width
    int wmanger_height = wallpaperManager.getDesiredMinimumHeight();
    float ratio = (float) wmanger_height / (float) bitmap.getHeight();
    if (bitmap.getWidth()*ratio < wh[0]){
            //如果带入缩放比例计算过后发现图片宽度小于设备宽度, 则对缩放比例进行微调
            ratio = ratio * (wh[0]/(bitmap.getWidth()*ratio));
    }

发表评论

电子邮件地址不会被公开。