String imageUrl = ImageList.get(currentIndex);
String imagePath = drawableManager.getImagePath(imageUrl);
try {
// getApplicationContext().setWallpaper(getWrapperBitmap(new BitmapDrawable(BitmapFactory.decodeFile(imagePath))));
// getApplicationContext().setWallpaper(drawableManager.getFixBitmap(width * 2, height, imagePath));
// Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
WallpaperManager instance = WallpaperManager.getInstance(this);
int desiredMinimumWidth = instance.getDesiredMinimumWidth();
int desiredMinimumHeight = instance.getDesiredMinimumHeight();
instance.setBitmap(drawableManager.getFixBitmap(desiredMinimumWidth, desiredMinimumHeight, imagePath));
Toast.makeText(this, "墙纸设置成功!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
Toast.makeText(this, "墙纸设置失败!", Toast.LENGTH_SHORT).show();
}
关键的部分是通过WallpaperManager拿到期望的墙纸的宽度 高度,然后再把图片等比缩放到这样的宽高就行了。