Android显示网格地图
我是Android新手 我的目标是能够创建最多30×30的栅格地图。栅格地图的大小可能会有所不同。最重要的是,我能够改变细胞的颜色。我尝试了两种方法,但它们似乎不起作用 方法1,我使用onDraw。我设法得到了地图,但我无法给我想要的单元格着色: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();
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);