Android Surfaceview屏幕截图,上面画有直线/椭圆

Android Surfaceview屏幕截图,上面画有直线/椭圆,android,screenshot,surfaceview,Android,Screenshot,Surfaceview,我已经在stackoverflow和其他论坛上查看了很多关于在android中编程拍摄surfaceview屏幕截图的讨论,如下面的一个 但是,从表面上看,我们正面临一个独特的问题。我们正在使用api canvas.drawline()在surfaceview的画布上绘制一条线。但是,当我们使用大量中提供的示例代码拍摄surfaceview的屏幕截图时,屏幕截图上就没有这一行了。在画布上绘制的线是屏幕截图的一部分 基本上,我们正在启用缓存,构建缓存&获取视图的缓存,如下面的链接所示 www.g

我已经在stackoverflow和其他论坛上查看了很多关于在android中编程拍摄surfaceview屏幕截图的讨论,如下面的一个

但是,从表面上看,我们正面临一个独特的问题。我们正在使用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%2ftake-screen-shot-of-a-surfaceview-in-android&ei=Xy0SUv3oOpDNrQfDmIHoAQ&usg=afqcnf8pinyhqsa9z-Nt44kqzTtT-a&sig2=vzw5jk3jkzlzl9q&bv61,bv61


这是不对的。有人能提出建议吗?提前感谢。

尝试设置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;
}