Android 使用layout.getDrawingCache()根据视图端口裁剪图像

Android 使用layout.getDrawingCache()根据视图端口裁剪图像,android,image-processing,Android,Image Processing,我有一个绝对布局,其中包含2个按钮和一个动态添加的图像。图像宽度和高度大于屏幕大小,可在两个方向上滚动。我需要在此图像上放置一个动态文本。文本视图在运行时添加,并拖动到图像中的任何位置。 将文本视图放置在所需位置后,我需要使用动态放置的文本存储图像。为此,我使用下面的代码 absView.setDrawingCacheEnabled (true); bitmap = Bitmap.createBitmap(absView.getDrawingCache()); bit

我有一个绝对布局,其中包含2个按钮和一个动态添加的图像。图像宽度和高度大于屏幕大小,可在两个方向上滚动。我需要在此图像上放置一个动态文本。文本视图在运行时添加,并拖动到图像中的任何位置。 将文本视图放置在所需位置后,我需要使用动态放置的文本存储图像。为此,我使用下面的代码

absView.setDrawingCacheEnabled (true);              
bitmap = Bitmap.createBitmap(absView.getDrawingCache());
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
absView.setDrawingCacheEnabled(false);
但是位图只包含整个图像的可见视图,而不包含大于屏幕大小的隐藏视图。 如何使用动态放置的textview在位图中捕获整个布局视图?

您将无法使用absView.getDrawingCache获取视图的图形缓存, 对于不可见的部分,我认为不会存储缓存

如果您希望合并位图,这可能会对您有所帮助


我不确定这是否有效,但值得一试

 Bitmap viewBitmap = Bitmap.createBitmap(viewWidth,viewHeight,Bitmapconfig);
 Canvas viewCanvas = new Canvas(viewBitmap);
 absView.draw(viewCanvas);
在此视图之后,位图可能会绘制完整视图

drawingcache将不具有完整视图,因为仅绘制视图的可见部分,而这正是缓存的部分