我的应用程序是启动器,现在我需要当前视图的位图。
可以通过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();
}

07-26 08:28