我正在尝试获取应用程序屏幕上显示的所有内容的位图。我目前正在使用以下内容检索视图及其屏幕截图:
View viewToCapture = activity.getWindow().getDecorView().getRootView();
... // some code here for enabling drawing cache if necessary, etc
Bitmap screenshot = viewToCapture.getDrawingCache();
生成的屏幕截图显示了我想要的内容,除非PopupWindow
或AlertDialog
当前处于打开状态。它们似乎不在根视图下的视图层次结构中。是否有一个替代视图,我可以使用它来捕获屏幕上的所有内容?我不想捕获应用程序之外的任何内容,例如通知栏。
答案 0 :(得分:1)
尝试制作活动窗口的位图和对话框窗口的位图,然后使用画布将图像叠加在一起。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
try {
Bitmap bmOverlay = Bitmap.createBitmap(width, height, bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, 0, 0, null);
canvas.drawBitmap(bmp2, 0, 0, null);
return bmOverlay;
} catch (Exception e) { e.printStackTrace() }
答案 1 :(得分:0)
我认为如果您想要捕获所有内容,您必须使用ddms工具拍摄屏幕截图,然后裁剪出您不想要的任何内容,例如通知栏。