1

我已经查看了关于 stackoverflow 和其他论坛的许多讨论,这些讨论是关于以编程方式在 android 中截取表面视图的屏幕截图,如下所示。

在 android 中截取 SurfaceView 的屏幕截图

但是,我们正面临一个看起来独特的问题。我们正在使用 api canvas.drawline() 在表面视图的画布上绘制一条线。但是,当我们使用众多提供的示例代码截取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-screen-shot-of-a- surfaceview-in-android&ei=Xy0SUv3oOpDNrQfDmIHoAQ&usg=AFQjCNFNQA8PinYhqSA9z-Nt44kqzTtT-A&sig2=Kcvzw5j3wKXliC0EzzLd9Q&bvm=bv.50768961,d.bmk&cad=rja

是不是不对。有人可以建议吗?提前致谢。

4

1 回答 1

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;
}
于 2013-08-19T15:01:51.500 回答