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拿到期望的墙纸的宽度 高度,然后再把图片等比缩放到这样的宽高就行了。