捕获包含tilemap

时间:2015-09-28 06:36:12

标签: android screenshot surfaceview

我想截取我的应用程序的屏幕截图,在一个活动中,我有SurfaceView,它包含了瓷砖贴图。

点击一个按钮,我执行屏幕捕获代码并在对话框中显示它以及一个edittext和两个按钮。

在SO和互联网上使用各种帖子,我尝试了以下代码段:

样本1)

View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

样本2)

bitmap = Bitmap.createBitmap(v1.getWidth(),
v1.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v1.draw(canvas);

样本3)

mDrawerLayout.setDrawingCacheEnabled(true);
mDrawerLayout.buildDrawingCache(true);
bitmap = Bitmap.createBitmap(mDrawerLayout.getDrawingCache());
mDrawerLayout.setDrawingCacheEnabled(false);

样本4)

bitmap = Bitmap.createBitmap(mDrawerLayout.getWidth(),
mDrawerLayout.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
mDrawerLayout.draw(canvas);

现在我最接近我的要求的是样本1代码本身。检查下面的图像是否相同。

请注意,我无法正确保存实际图像,即SD卡上的图像1。但至少使用第一个代码片段,它会显示在对话框中。

另请注意,对于普通屏幕(没有画布),此代码工作正常,但是当使用SurfaceView进行查看时,这会失败。

请查看以下图片的说明:

图片1:实际应用程序屏幕 - 使用设备在正常状态下捕获屏幕截图的功能获取此屏幕截图

图片2:实际应用程序屏幕 - 在执行以编程方式截取屏幕截图的代码时,使用设备捕获屏幕截图的功能获取此屏幕截图

图3:以编程方式捕获屏幕截图后保存在SD卡上的图像

图片1 Image 1

图片2 Image 2

图片3 Image 3

我做错了吗?任何帮助表示赞赏。

0 个答案:

没有答案