我的应用程序是启动器,现在我需要当前视图的位图。
可以通过getDrawingCache()检索启动器的视图,如下所示
Bitmap bitmap = Bitmap.createBitmap(screen_w, screen_h, Config.ARGB_8888 );
View decorview = getWindow().getDecorView();
decorview.setDrawingCacheEnabled(true);
bitmap = decorview.getDrawingCache();
但是位图仅是启动器视图的图片,不包含墙纸。
如何获得墙纸的位图?
最佳答案
您可以使用WallpaperManager
获取墙纸位图,并在其顶部绘制启动器的“视图”。
private Bitmap getBackground(Activity activity)
{
View decorView = activity.getWindow().getDecorView();
Bitmap outBmp = Bitmap.createBitmap(decorView.getWidth(), decorView.getHeight(), Bitmap.Config.ARGB_8888);
decorView.setDrawingCacheEnabled(true);
Bitmap launcherBmp = decorView.getDrawingCache();
Canvas canvas = new Canvas(outBmp);
canvas.drawBitmap(getWallpaperBitmap(activity), 0, 0, null);
canvas.drawBitmap(launcherBmp, 0, 0, null);
decorView.setDrawingCacheEnabled(false);
return outBmp;
}
private Bitmap getWallpaperBitmap(Context context)
{
WallpaperManager wpMgr = WallpaperManager.getInstance(context);
BitmapDrawable bmpDraw = (BitmapDrawable) wpMgr.getDrawable();
return bmpDraw.getBitmap();
}