画布上的圆形网格(Android)

画布上的圆形网格(Android),android,android-canvas,Android,Android Canvas,我是android开发新手。我试着做游戏。在那个游戏中,我必须在画布上显示5*6点的网格。为此,我决定先显示相同范围的圆圈,然后在其中显示位图。我学习了绘制圆的教程。我编译了那个代码。这里没有错误或警告,但画布不显示任何圆圈。请建议我该怎么办。下面给出了代码和logcat输出 我的代码文件: package com.example.circle; import android.os.Bundle; import android.app.Activity; import android.cont

我是android开发新手。我试着做游戏。在那个游戏中,我必须在画布上显示5*6点的网格。为此,我决定先显示相同范围的圆圈,然后在其中显示位图。我学习了绘制圆的教程。我编译了那个代码。这里没有错误或警告,但画布不显示任何圆圈。请建议我该怎么办。下面给出了代码和logcat输出

我的代码文件:

package com.example.circle;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public class board extends View
    {
        Paint p = new Paint();
        Paint black=new Paint();
        Paint blue=new Paint();
        int rows=5;
        int cols=6;
        Bitmap [][] dot=new Bitmap[rows][cols];
        Canvas g=new Canvas();
        public board(Context context) {
            super(context);
            p.setARGB(255, 255, 255, 255);
            black.setARGB(255, 0, 0, 0);
            blue.setARGB(255, 255, 0, 0);
            for(int y=0; y<cols; y++)
            {
                for(int x=0; x<rows; x++)
                {
                    Bitmap map= Bitmap.createBitmap(100,100, Config.RGB_565);
                    dot[x][y]=map;
                    g.setBitmap(dot[x][y]);
                    g.drawCircle(50, 50, 50, black);

                }
            }
        }
        protected void onDraw(Canvas canvas)
        {
            super.onDraw(canvas);
            canvas.drawPaint(p);
            for(int y=0; y<cols; y++)
            {
                for(int x=0; x<rows; x++)
                {
                    canvas.drawBitmap(dot[x][y], x*100, y*100,null);
                }
            }

        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


}
将此更改为

setContentView(new board(this));
由于您没有创建新的类板实例并将其设置为内容,因此不会添加此视图。通常,类名以大写字母开头

将其添加到onDraw for循环中,而不是绘制位图

canvas.drawCircle(50, (x + 1) * 2 * 50, (y + 1) * 2 * 50, black);

我试过这个。它显示屏幕的四分之一部分为白色,其他三部分为黑色。请参见编辑后的答案。避免创建位图,直接在画布上画圆圈。我已经看过answer的编辑版本。非常感谢。你推荐什么?我是Android新手,所以选择这种方式看起来很容易。我想在圆圈中显示.png图像,我应该怎么做?期待您的回复。谢谢您的帮助。我用了这个::canvas.drawCircle50,x+1*2*50,y+1*2*50,黑色。屏幕左下角只显示一个圆圈。我应该更改什么?
setContentView(new board(this));
canvas.drawCircle(50, (x + 1) * 2 * 50, (y + 1) * 2 * 50, black);