Android 绘制包含图像的圆形网格

Android 绘制包含图像的圆形网格,android,bitmap,android-canvas,drawable,Android,Bitmap,Android Canvas,Drawable,目前我正在尝试用android制作游戏。我是android新手,所以我想向你们学习。我的游戏主题几乎就是这样。我设计了一个包含四个选项的开始屏幕,“单人”、“双人”、“帮助”和“退出”。当玩家点击单人或双人时,会出现一个包含点阵的棋盘。这些点将一直存在,直到玩家在它们之间点击以显示一条线。 现在的问题是董事会。我已经定义了一个圆形的2D数组来显示这些圆形中的点(.png)现在我正试图从我的res文件夹中调用圆圈中的“黑点”图像。但我还没有从web上找到满足我要求的任何帮助。我在下面提到我的代码。

目前我正在尝试用android制作游戏。我是android新手,所以我想向你们学习。我的游戏主题几乎就是这样。我设计了一个包含四个选项的开始屏幕,“单人”、“双人”、“帮助”和“退出”。当玩家点击单人或双人时,会出现一个包含点阵的棋盘。这些点将一直存在,直到玩家在它们之间点击以显示一条线。 现在的问题是董事会。我已经定义了一个圆形的2D数组来显示这些圆形中的点(.png)现在我正试图从我的res文件夹中调用圆圈中的“黑点”图像。但我还没有从web上找到满足我要求的任何帮助。我在下面提到我的代码。请建议我应该做什么来显示圆圈中的图像。我的代码正确执行并显示(5*6)黑色背景的圆圈网格。现在我需要的是在这些圆圈中显示res文件夹中的.png黑点。 这是我的代码文件

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(new board(this));
    }
    public class board extends View
    {
        Paint p = new Paint();
        Paint blue=new Paint();
        // Paint green=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, 102,0);
            blue.setARGB(255, 255, 255, 255);
            // green.setARGB(0, 0, 06, 0);
            for(int y=0; y<cols; y++)
            {
                for(int x=0; x<rows; x++)
                {
                    Bitmap grid= Bitmap.createBitmap(100,100, Config.RGB_565 );

                    dot[x][y]=grid;
                    g.setBitmap(dot[x][y]);
                    g.drawCircle(50, 50, 20, blue);

                }
            }
        }
        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++)
                {
                    //g.drawCircle(50, 50, 20, blue);
                    //canvas.drawCircle(50, (x + 1) * 2 * 50, (y + 1) * 2 * 50, blue);
                    canvas.drawBitmap(dot[x][y], x*100, y*100,null);
                }
            } 

        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

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


}
package com.example.circle;
导入android.os.Bundle;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.Bitmap.Config;
导入android.graphics.Canvas;
导入android.graphics.Paint;
导入android.view.Menu;
导入android.view.view;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(新董事会(本));
}
公营班级委员会扩展视野
{
油漆p=新油漆();
蓝色油漆=新油漆();
//油漆绿色=新油漆();
int行=5;
int cols=6;
位图[][]点=新位图[行][cols];
Canvas g=新画布();
公共董事会(背景){
超级(上下文);
p、 setARGB(255,255,102,0);
蓝色。setARGB(255、255、255、255);
//绿色.setARGB(0,0,06,0);

对于(int y=0;yy),必须将构造器中的绘图内容放入onDraw()中。视图仅在onDraw()中绘图,任何其他绘图操作都是浪费的。因此,在onDraw中使用canvas.drawCircle,并在构造函数中去掉g.drawCircle。@ElDuderino我根据您的说明更改了代码。但这里的问题是,当我在upper for loop中使用canvas.drawCircle而不是g.drawCricle时,它显示“无圆”当我在lower for loop中调用canvas.drawCircle时,它在屏幕的左上角只显示一个圆圈。请建议我该怎么做?我将draw调用的位置从构造函数更改为onDraw方法。