我已经研究找到解决方案来拍摄当前活动的快照,我找到了 2 个拍摄快照的解决方案,但它们都不能帮助我得到我想要的正确的东西。
我的活动使用相机,并在该布局中显示 3D 对象(与 AR 相同,但不使用标记,只需在相机框架中绘制 3D 对象)。
因此,当我使用找到的解决方案时,我只是得到父布局(我用来保存相机和 3D 对象的相对布局)和一些其他对象(一些按钮),该位图与 XML 文件的物理设计屏幕相同。
我使用此解决方案获取快照:
private Bitmap takeScreenShot(Activity activity)
{
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
view.destroyDrawingCache();
return b;
}
这个解决方案:
public Bitmap snap() {
Bitmap bitmap = Bitmap.createBitmap(this.view.getWidth(), this.view.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
但我得到了同样的结果。
请帮助我找到解决此问题的好方法。
谢谢。