以编程方式裁剪Android屏幕截图?

5
我正在使用以下(收集来的)代码来进行“屏幕截图”并进行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个回答

3

在发送截图之前,您可以尝试使用Bitmap.createBitmap处理一下。

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

'x'是一个整数,代表在这种情况下从图像底部裁剪的像素数量。您可以进行某些修改并相应地进行裁剪,以适应您的需求。

希望对您有所帮助。


这听起来可以胜任这项工作!我今天晚些时候会试一试,非常感谢。 - SM2011

0
问题在于你并没有像截图一样获取当前应用程序的图像。这是因为它不能包括状态栏,因为它不是你的应用程序的一部分,也不能向上扩展绘图区域以捕获状态栏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接