如何在SurfaceView中设置drawText

时间:2012-03-28 20:02:12

标签: java android surfaceview drawtext

我已经创建了一个显示位图的SurfaceView,没有任何问题。但我想在屏幕底部显示一个Text,我认为它可以称为画布。

我尝试以与使用位图相同的方式绘制文本,但没有成功。我得到了de force close错误。

我有这样的事情:

        public void run() {

        while (isRunning) {
            if (!ourHolder.getSurface().isValid())
                continue;

            Canvas canvas = ourHolder.lockCanvas();

            canvas.drawColor(Color.WHITE);

            canvas.drawText(score, 200, 100, null);

            canvas.drawBitmap(enemy1, enemy1X, enemy1Y, null); // DRAW FIRST
                                                                // ENEMY

            ourHolder.unlockCanvasAndPost(canvas);

我已经尝试过设置一个新的Paint,而不是使用“null”,但它没有起作用:/

请告诉你怎么做,或者为什么不行。我是Android编程的新手......

谢谢;)

1 个答案:

答案 0 :(得分:2)

奇怪。 Сode看起来很清楚。 图片不包括文字?

然后指定文本颜料并设置颜色。试试这个测试:

Canvas canvas = null;
try {
    canvas = ourHolder.lockCanvas();
    synchronized (ourHolder) {
        canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(enemy1, enemy1X, enemy1Y, null);
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        canvas.drawText("XXXX", 200, 100, paint);
    }
} catch (Exception e) {
    Log.e(TAG, "run() lockCanvas()", e);
} finally {
    if (canvas != null) {
        ourHolder.unlockCanvasAndPost(canvas);
    }
}

添加

SurfaceView尺寸是否大于200х100?试试canvas.drawText("XXXX", 20, 20, paint);