注意:请不要将其标记为重复,因为几年前就曾提出过同样的问题,这在当时可能有效,但现在不起作用。
使用下面的代码,我的壁纸要么拉伸到屏幕 2 和 3,要么根据设备在屏幕底部裁剪。以下代码适用于三星设备,但不适用于其他制造商的设备。
我还尝试使用以下方法来获取高度和宽度,但这不起作用(壁纸缩放并拉伸到其他屏幕)。 getWallpaperDesiredMinimumHeight() 和 getWallpaperDesiredMinimumWidth()
public void setWallpaper() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
WallpaperManager wm = WallpaperManager.getInstance(this);
Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.myPicture);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmap, width, height, true);
wm.setWallpaperOffsetSteps(1, 1);
wm.suggestDesiredDimensions(width, height);
try {
wm.setBitmap(scaledBitmap);
} catch (IOException e) {
}
}
制造商有不同的设置壁纸的方式,将壁纸设置为可移动或将壁纸设置为固定。
在Android上壁纸是缩放的,当我们从主屏幕顶部拖动时,您可以看到壁纸被缩小。因此,我如下缩放了壁纸的高度和宽度,这帮助我在设备上正确设置壁纸。
以下是更新后的代码。
public void setWallpaper() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
height = (int) (height * (95.0f / 100.0f));
width = (int) (width * (85.0f / 100.0f));
WallpaperManager wm = WallpaperManager.getInstance(this);
Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.myPicture);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmap, width, height, true);
wm.setWallpaperOffsetSteps(1, 1);
wm.suggestDesiredDimensions(width, height);
try {
wm.setBitmap(scaledBitmap);
} catch (IOException e) {
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)