我已经检查了很多关于stackoverflow& amp;其他论坛以编程方式在android中截取一个surfaceview的截图,如下所示。
Taking screen shot of a SurfaceView in android
但是,我们面临一个独特的问题。我们使用api canvas.drawline()在surfaceview的画布上绘制一条线。但是当我们使用众多中提供的示例代码截取surfaceview的截图时,屏幕截图上缺少该行。画布上绘制的线条是屏幕截图的一部分。
基本上,我们正在启用缓存,构建缓存和放大器。获取视图的缓存,如下面的链接。
www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CD0QFjAC&url=http%3A%2F%2Fstackoverflow .COM%2Fquestions%2F12724237%2Ftaking-屏幕截图对的一-surfaceview功能于机器人&安培; EI = Xy0SUv3oOpDNrQfDmIHoAQ&安培; USG = AFQjCNFNQA8PinYhqSA9z-Nt44kqzTtT-A和SIG2 = Kcvzw5j3wKXliC0EzzLd9Q&安培; BVM = bv.50768961,d.bmk&安培; CAD = RJA
不正确吗?有人可以建议吗?提前谢谢。
答案 0 :(得分:0)
尝试设置drawingCacheEnabled(false) - 这种方法对我有用:
/**
* returns the given view as a bitmap
* @param view
* @param viewWidth
* @param viewHeight
* @return
*/
public static Bitmap getBitmapFromView(View view) {
Log.debug(LOG_SOURCE, "getBitmapFromView: "+view.getWidth()+" x "+view.getHeight());
if (view.getWidth() == 0 || view.getHeight() == 0)
return null;
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.setDrawingCacheEnabled(false);
view.measure(view.getWidth(), view.getHeight());
view.layout(0, 0, view.getWidth(), view.getHeight());
view.draw(canvas);
canvas = null;
return bitmap;
}