我试图保存当前活动的屏幕截图,但不是整个视图,只是其中的一部分。 就我而言: My activity
在附图中,我想保存一个由视图B,C和C构成的位图。 d。
B是线性布局,C是纯位图,D是相对布局。
据我了解,一种方法是创建一个画布,添加所有元素'进入它,最后得到所需的自定义位图。
我遇到以下代码时出现问题:
<gap:plugin name="org.apache.cordova.camera" />
结果是位图C被绘制为Ok,但是视图B太大并且扩展了位图。 我没有尝试添加视图D ..
任何人都可以帮助我吗?也许有更好的方法来实现我的目标? 谢谢!
答案 0 :(得分:1)
我认为最简单的方法是获取Activity
整个内容的屏幕截图,然后裁掉A View
。 Canvas#drawBitmap(Bitmap bmp, Rect src, Rect dest, Paint pnt)
重载很容易实现。 Rect src
描述了您要复制的来源Bitmap
部分,而dest
是要绘制来源的目标Bitmap
的部分。(注意: Rect
的大小不必相同。)
如果我正确地关注你,我相信以下方法应该做你想要的。
private Bitmap capture()
{
View actContent = findViewById(android.R.id.content);
Bitmap result = Bitmap.createBitmap(actContent.getWidth(),
actContent.getHeight() - viewA.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
actContent.setDrawingCacheEnabled(true);
Rect src = new Rect(0, viewA.getHeight(), actContent.getWidth(), actContent.getHeight());
Rect dest = new Rect(0, 0, result.getWidth(), result.getHeight());
canvas.drawBitmap(actContent.getDrawingCache(), src, dest, null);
actContent.setDrawingCacheEnabled(false);
return result;
}