我正在构建一个应用程序,我想要更改壁纸。所以这是我的代码。 当用户设置壁纸时,我将路径保存到共享首选项。
Display display = getWindowManager().getDefaultDisplay();
SharedPreferences prefs = getBaseContext().getSharedPreferences(PREFS_NAME,0);
if (prefs.contains(d)) {
Bitmap bitmapOrg = BitmapFactory.decodeFile(prefs.getString(d, ""));
int newWidth = display.getWidth();
int newHeight = display.getHeight();
Bitmap resizedBitmap =Bitmap.createScaledBitmap(bitmapOrg, newWidth, newHeight, true);
myWallpaperManager.setBitmap(resizedBitmap);
}
并且使用该代码我得到类似this的内容,而我想显示像this
这样的图片知道怎么做吗?
答案 0 :(得分:1)
好的,我发现了如何做到这一点。 首先,我创建一个新的位图
newBmp = Bitmap.createBitmap(display.getWidth(), display.getHeight(), Bitmap.Config.ARGB_8888);
然后重新调整原始位图:
Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmapOrg, scaleWidth, scaleHeight, false);
然后我调用叠加来将两个图像一起绘制。第一个图像具有显示尺寸,第二个图像具有图像。
vate Bitmap overlay(Bitmap bmp1, Bitmap bmp2, int left, int imgsize) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, left-(imgsize/2), 15, null);
return bmOverlay;
}
最后:
myWallpaperManager.setBitmap(newB);