Java android中画布的缓慢刷新

Java android中画布的缓慢刷新,java,android,android-canvas,Java,Android,Android Canvas,我正在做一个应用程序,它在Android的预览相机上画一个矩形。但问题是,前面的矩形会出现,所以我认为画布的刷新速度比预览相机慢 这是我的代码: 在我的活动课上: if (face.orientation != TYPE_FACE_ON_TRACK.face_notDetected) { drawView.setPaint(true); drawView.setSize(mat.size());

我正在做一个应用程序,它在Android的预览相机上画一个矩形。但问题是,前面的矩形会出现,所以我认为画布的刷新速度比预览相机慢

这是我的代码:

在我的活动课上:

if (face.orientation != TYPE_FACE_ON_TRACK.face_notDetected) {
                        drawView.setPaint(true);
                        drawView.setSize(mat.size());
                        drawView.invalidate();
                        drawView.paintRect(face.rect);

                    }
这是我的onDraw和paintRect函数:

@Override
    public void onDraw(Canvas canvas) {

        mCanvas = canvas;

        if (checkPaint == false) {
            canvas.drawColor(Color.TRANSPARENT);
        }

    }

    public void paintRect(Rect rect) {

        int vWidth = getWidth();
        int vHeight = getHeight();

        int l = (int) ((rect.x * vWidth) / mSize.width);
        int t = (int) ((rect.y * vHeight) / mSize.height);
        int r = (int) (((rect.width + rect.x) * vWidth) / mSize.width);
        int b = (int) (((rect.height + rect.y) * vHeight) / mSize.height);


        mCanvas.drawRoundRect(new RectF(l, t, r, b), 20, 20, drawingPaint);

    }
所以,当我调用.invalidate应用程序调用onDraw时,然后当我调用.paintRect绘制矩形时


我正在Nexus5中测试,所以我认为问题不在于设备。

你不能只保存画布,然后像那样在上面绘制。所有绘图都应在onDraw中完成,如果需要绘制这样的矩形,则应保存绘制位置,并在下次调用onDraw时进行绘制。

是否使用预览?你是全尺寸的吗?
如果使用全尺寸,则需要在后台创建预览。如果可以在后台创建预览,请第一次创建预览,然后仅为新图像创建预览。

canvas.drawColorColor.TRANSPARENT;不做任何事情我在不检测人脸的画面中使用这句话来清理屏幕,但我的想法是做一个API来绘制矩形、圆形等。。。所以我不能在onDraw中作画,因为我想创建不同的函数,不同的几何元素。可以在视图的数据结构中保存对象类型和位置。然后在onDraw中绘制它们。存储画布供以后使用是无效的,不能保证它不会更改。画布仅在调用期间有效。