如何在SurfaceView中设置drawText



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

我试着用与位图相同的方式绘制文本,但没有成功。我得到了强制关闭错误。

我有这样的东西:

        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",但效果不太好:/

你能告诉我必须怎么做吗,或者为什么它不起作用。我是安卓编程的新手。。。

谢谢;)

奇怪。С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);

最新更新