我已经看了大概每SO文章concering捕捉屏幕(屏幕截图,screendump)程序在Android上,他们通常都具有相同的回答结束了。
它的问题在于,它捕捉你所指定的视图,但它并没有反映出可能是“之上”的“根视图”任何对话框。 这是我使用的代码,即不能“上头”捕获任何:
Bitmap bitmap;
View v1 = findViewById(android.R.id.content);
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File path = Environment.getExternalStorageDirectory();
File file = new File(path, "myDump.jpg");
FileOutputStream outputStream;
try
{
outputStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 10, outputStream);
outputStream.flush();
outputStream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
现在的问题是: 我怎么能捕捉整个屏幕,包括那些在上面的对话框? 我只是在捕捉我写的应用程序,而不是主屏幕或类似的东西,只是什么是我的根视图的顶部感兴趣。
我看过一些关于生根,但我真的希望,走的是应用程序我写的一个完整的screendump不能是不可能的。
使用这个库....它为我的伟大工程。 https://github.com/jraska/Falcon
// Saving screenshot to file
Falcon.takeScreenshot(this, imageFile);
// Take bitmap and do whatever you want
Bitmap bitmap = Falcon.takeScreenshotBitmap(this);
这是工作打开DialogFragment内。
View v1 = ((ViewGroup) (((MyActivity)getActivity()).findViewById(android.R.id.content)));
v1.setDrawingCacheEnabled(true);
Bitmap bitmapParent = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
// dialogView is the inflated view of the DialogFragment
dialogView.setDrawingCacheEnabled(true);
Bitmap bitmapDialog = Bitmap.createBitmap(dialogView.getDrawingCache());
dialogView.setDrawingCacheEnabled(false);
Canvas canvas = new Canvas(bitmapParent);
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(bitmapDialog, 0, 0, paint);
// Activity and dialog captured!!
bitmapParent.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(new File(directory, name)));
这是可能的,你需要画所有视图根位图。 试试这个库: https://github.com/jraska/Falcon它可以捕捉Dailogs你的屏幕截图。