以编程方式裁剪Android屏幕抓取?

时间:2012-07-19 08:26:53

标签: android screenshot

我正在使用以下(清除)代码来获取“屏幕截图”和action_send。它的工作还可以,唯一的问题是图像不包含状态栏。我知道为什么,我只是不确定该怎么做。有没有办法我可以编程方式裁剪图像,或者在进行getDrawingCache()调用之前设置某种边界?

提前致谢!

View v1 = findViewById(android.R.id.content).getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap screenshot = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

String path = Images.Media.insertImage(getContentResolver(), screenshot, "title", null);
Uri screenshotUri = Uri.parse(path);

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/png");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);

startActivity(Intent.createChooser(sharingIntent, "Share image using"));

2 个答案:

答案 0 :(得分:2)

您可以在发送屏幕截图之前尝试使用Bitmap.createBitmap

Bitmap cropimg = Bitmap.createBitmap(originalImg, 0, 0, originalImg.width(), originalImg.height() - x)

'x'是Integer,是在这种情况下从图像底部裁剪的像素数。您可以进行某些修改并根据您的要求裁剪。

希望有所帮助

答案 1 :(得分:0)

问题是您没有截取屏幕截图,而是获取应用程序的当前图像。这不能包含状态栏,因为它不是您的应用程序的一部分,也不能向上扩展绘图区域以捕获状态栏。