在Activity中输入两个值,网格的行数row和列数col(通过EditText控件输入的) 。然后在MyView.java中绘制这个网格,想问下有人知道怎么把row跟col的值传到MyView.java中MyView.java
public class MyView extends View {
int span = 32;
int row, col;
int[][] mapDate;
Paint paint = new Paint();
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {//构造器
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
paint.setColor(Color.GREEN);//设置颜色
for(int i=0; i<row+1; i++)
{
canvas.drawLine(0, span*i, span*col, span*i, paint);
}
for(int j=0; j<col+1; j++)
{
canvas.drawLine( span*j, 0, span*j, span*row, paint);
}
super.onDraw(canvas);
}
}
public class MyView extends View {
int span = 32;
int row, col;
int[][] mapDate;
Paint paint = new Paint();
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {//构造器
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
paint.setColor(Color.GREEN);//设置颜色
for(int i=0; i<row+1; i++)
{
canvas.drawLine(0, span*i, span*col, span*i, paint);
}
for(int j=0; j<col+1; j++)
{
canvas.drawLine( span*j, 0, span*j, span*row, paint);
}
super.onDraw(canvas);
}
}
最好设置setXXX()方法 ;1、 在xml定义的话 ,获得该对象的引用 myView = ()findViewById(R.id.xxx);
myView.setXXX();2、在代码里构造View对象时,例如:myView = new myView();
myView.setXXX(); 在onCreate() 或者 onResume()里设置方法都可以 。
public MyView(Context context,int row,int col) {
super(context);
this.row=row;
this.col=col;
}
public MyView(Context context,int row,int col) {
super(context);
this.row=row;
this.col=col;
}
然后在Activity里怎么调用呢
mView = new MyView(this,10,10);
引用 4 楼 的回复:请问二楼在Activity里怎样调用这个构造函数的呢?
mView = new MyView(this,10,10);
这个试过了,没用哎!
不需要将值通过构造函数赋值啊,直接在xml里通过这个方法myView = ()findViewById(R.id.xxx);获得引用,在赋值啊。
不需要将值通过构造函数赋值啊,直接在xml里通过这个方法myView = ()findView…… mView = (MyView)findViewById(R.id.mView);这样子做没出现没能引用成功,出不来图啊~望再指点