0

問題なくビットマップを表示する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);

「null」を使用する代わりに、すでに新しいペイントを設定しようとしましたが、うまくいきませんでした:/

それがどのように行われなければならないのか、なぜそれが機能しないのかを教えてください。Androidプログラミングは初めてです...

ありがとう ;)

4

1 に答える 1

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);

于 2012-03-28T22:07:08.957 に答える