在android中缓慢刷新画布

时间:2014-06-23 15:17:07

标签: java android android-canvas

我正在做一个应用程序,它在Android中预览相机上绘制矩形。但问题是出现以前的矩形,所以我认为与预览相机相比,Canvas的刷新速度太慢了。

这是我的代码:

在我的活动课程中:

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()app调用onDraw,然后当我调用.paintRect()绘制Rectangle时。

我正在测试nexus 5,所以我不认为问题是设备。

2 个答案:

答案 0 :(得分:0)

你不能只是保存一个画布,然后就这样画画。你的所有绘图都应该在onDraw中完成,如果你需要绘制一个像这样的矩形,你应该保存它的位置,并在下次调用onDraw时绘制它。

答案 1 :(得分:0)

你使用预览吗?你做全尺寸的工作吗? 如果您使用完整尺寸,则需要在后台创建预览。如果可以在后台创建预览,则首次创建它,然后仅为新图像创建预览。