2012-03-28 10 views
0

私は問題なくビットマップを表示するSurfaceViewを作成しました。しかし、私は画面の下部にテキストを表示したい、私はそれがキャンバスと呼ばれることができると思う。SurfaceViewでdrawTextを設定する方法

私はビットマップで行ったのと同じ方法でテキストを描画しようとしましたが、成功しませんでした。私は力を閉じるエラーを取得します。

私はこのような何か持っている:私はすでに代わりに「ヌル」を使用するのでは、あまりにも新しいペイントを設定しようとしたが、それは同様に働いていなかった

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

を:/

どうすればいいのか、それともうまくいかないのか教えてください。 Androidプログラミングの新機能...

ありがとう;)

答えて

2

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

+0

私は家に帰るときにそれを試してみます。私は背景がテキストをカバーしているかどうかわからないので、私はアプリを実行することもできません。なぜ "同期"? – Kevin04PT

+0

良い質問...私はちょっと探しましたが、答えが見つかりませんでした。私は初心者です。誰が答えを知っていますか? – Silver

+0

ハム、私はSurfaceViewのディメンションについては知らない...私はちょっと例では、大きな画面で、私の携帯電話ではなく、別のものでは、素晴らしいことができますので、次元で失われたちょっと。どのように私はそれを使用することができますか? – Kevin04PT

関連する問題