在SurfaceHolder上绘制文本

时间:2012-04-24 10:37:56

标签: android surfaceholder

我正在做一个使用网络摄像头的应用程序,我想在拍摄照片后显示一些文字,所以在方法ShutterCallBack中我写了这个

    ShutterCallback shutterCallback = new ShutterCallback() {
        public void onShutter() {
            Log.d("DHA", "onShutter'd");
            Canvas cnv = mSurfaceHolder.lockCanvas(null);
            Log.w("DHA", "Nana");
            Paint p = new Paint();
            Log.w("DHA", "Nana2");
            p.setColor(Color.RED);
            Log.w("DHA", "Nana3");
            cnv.drawText("Hello", 0, 0, p);
            Log.w("DHA", "Nana4");
            mSurfaceHolder.unlockCanvasAndPost(cnv);
            Log.w("DHA", "Nana5");
        }
    };

它无法终止我的应用程序......如何在表面上书写文字?

1 个答案:

答案 0 :(得分:0)

没有日志很难说,但我的猜测是lockCanvas()返回null。当Surface不可用时调用lockCanvas时会发生这种情况。检查surfaceCreated和surfaceDestroyed。 您的代码的另一个但可能不相关的问题是您使用drawText()的坐标。 (0,0)表示文本在可见区域之外绘制。