Android显示网格地图

Android显示网格地图,android,map,Android,Map,我是Android新手 我的目标是能够创建最多30×30的栅格地图。栅格地图的大小可能会有所不同。最重要的是,我能够改变细胞的颜色。我尝试了两种方法,但它们似乎不起作用 方法1,我使用onDraw。我设法得到了地图,但我无法给我想要的单元格着色: public static final float DEFAULT_X_OFFSET= 10; public static final float DEFAULT_Y_OFFSET= 10; Paint paint = new Paint();

我是Android新手

我的目标是能够创建最多30×30的栅格地图。栅格地图的大小可能会有所不同。最重要的是,我能够改变细胞的颜色。我尝试了两种方法,但它们似乎不起作用

方法1,我使用onDraw。我设法得到了地图,但我无法给我想要的单元格着色:

public static final float DEFAULT_X_OFFSET= 10;
public static final float DEFAULT_Y_OFFSET= 10;
Paint paint = new Paint();

    public void onDraw(Canvas canvas)
     {
               paint.setColor(Color.YELLOW);
                float X=DEFAULT_X_OFFSET;
                float Y=DEFAULT_Y_OFFSET;
                //Draw The rows
                for(float iRow=0;iRow<=m_NoOfRows;iRow++)
                {
                        canvas.drawLine(X, Y,X+ this.m_width* this.m_NoOfCols,Y, paint);
                        Y=Y+ m_Height;

                }

                //Draw The Cols
                X=DEFAULT_X_OFFSET;
                Y=DEFAULT_Y_OFFSET;
                for(float iColumn=0;iColumn<=m_NoOfCols;iColumn++)
                {
                        canvas.drawLine(X, Y,X,Y+this.m_Height*this.m_NoOfRows,paint );
                        X=X+ this.m_width;
                }

        }
一旦我触发按钮,我点击AndroidRuntime错误

是否有任何指导或解决方案可以指导我实现目标

谢谢大家!

private Button button;
private Map map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initialize();

    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            map = new Map(MainActivity.this);
            map.mapSize();
        }
    });

}

public void initialize() {
    button = (Button) findViewById(R.id.button1);

}

Click listener应该在Oncreate方法中。

方法2似乎有些过分,特别是当映射大小不同时,如您所示

所以,我会选择方法1。您只需要调用
canvas.drawRect(…)
而不是
canvas.drawLine(…)
,然后告诉rect使用
paint.setStyle(paint.Style.FILL)填充

绘制一个单元格如下所示:

paint.setColor(Color.YELLOW);
paint.setStyle(Paint.Style.FILL); // or Paint.Style.FILL_AND_STROKE
paint.drawRect(x, y, x+width, y-height, paint);

美好的谢谢你的建议!=)
private Button button;
private Map map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initialize();
}

public void initialize() {
    button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            map = new Map(MainActivity.this);
            map.mapSize();
        }
    });

}
private Button button;
private Map map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initialize();

    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            map = new Map(MainActivity.this);
            map.mapSize();
        }
    });

}

public void initialize() {
    button = (Button) findViewById(R.id.button1);

}
paint.setColor(Color.YELLOW);
paint.setStyle(Paint.Style.FILL); // or Paint.Style.FILL_AND_STROKE
paint.drawRect(x, y, x+width, y-height, paint);