【问题标题】:Surfaceview screenshot with line/ellipse drawn over itSurfaceview 屏幕截图,上面绘制了线条/椭圆
【发布时间】:2013-08-19 14:53:39
【问题描述】:

我在 stackoverflow 和其他论坛上查看了许多关于以编程方式在 android 中截取 Surfaceview 屏幕截图的讨论,如下所示。

Taking screen shot of a SurfaceView in android

但是,看起来我们面临着一个独特的问题。我们正在使用 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

这不正确。任何人都可以建议吗?提前致谢。

【问题讨论】:

    标签: android screenshot surfaceview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      相关资源
      最近更新 更多