我已经创建了一个显示位图的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编程的新手......
谢谢;)
答案 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);