Surfaceview截图与线/椭圆画出了它(Surfaceview screenshot with

2019-10-18 12:49发布

我已签出的计算器及其他论坛多次讨论有关编程采取surfaceview的截图中的Android类似下面。

一个SurfaceView的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-screen-shot-of-a- surfaceview功能于机器人&EI = Xy0SUv3oOpDNrQfDmIHoAQ&USG = AFQjCNFNQA8PinYhqSA9z-Nt44kqzTtT-A&SIG2 = Kcvzw5j3wKXliC0EzzLd9Q&BVM = bv.50768961,d.bmk及CAD = RJA

它是不正确的。 任何人都可以好心建议? 提前致谢。

Answer 1:

尝试设置drawingCacheEnabled(假) - 这个方法对我的作品:

/**
 * 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;
}


文章来源: Surfaceview screenshot with line/ellipse drawn over it