Java 如何在android studio中使用画布创建网格
我试图在android studio中创建一个10x10的网格,它将显示在屏幕中央,我试图使用for循环来实现这一点,但无法正确实现。有人知道怎么做吗?我一直在看谷歌,没有关于如何做的例子或指南。我的代码如下Java 如何在android studio中使用画布创建网格,java,android,eclipse,canvas,grid,Java,Android,Eclipse,Canvas,Grid,我试图在android studio中创建一个10x10的网格,它将显示在屏幕中央,我试图使用for循环来实现这一点,但无法正确实现。有人知道怎么做吗?我一直在看谷歌,没有关于如何做的例子或指南。我的代码如下 public class Draw extends View { Paint red = new Paint(); Paint green = new Paint(); float startX; float stopX; float startY; float stopY; int re
public class Draw extends View {
Paint red = new Paint();
Paint green = new Paint();
float startX;
float stopX;
float startY;
float stopY;
int rectSide = 1000;
public Draw(Context context) {
super(context);
red.setColor(Color.RED);
green.setColor(Color.GREEN);
red.setStrokeWidth(8);
green.setStrokeWidth(8);
}
@Override
public void onDraw(Canvas canvas) {
int width = canvas.getWidth();
int height = canvas.getHeight();
for (int i = 2; i < 10; i++) {
startX = width / 2 - rectSide / 2;
startY = i*100;
stopX = width / 2 + rectSide / 2;
stopY = i*100;
canvas.drawLine(startX, startY, stopX, stopY, red);
}
for (int i = 2; i < 10; i++) {
startX = i*100;
startY = height / 2 - rectSide / 2;
stopX = i*100;
stopY = height / 2 + rectSide / 2;
canvas.drawLine(startX, startY, stopX, stopY, red);
}
}
}
公共类绘图扩展视图{
油漆红色=新油漆();
油漆绿色=新油漆();
浮动startX;
浮动stopX;
浮星;
浮动采矿法;
int-rectSide=1000;
公共绘图(上下文){
超级(上下文);
红色。设置颜色(颜色。红色);
绿色。设置颜色(颜色。绿色);
红色。设定行程宽度(8);
绿色。设置行程宽度(8);
}
@凌驾
公共空白onDraw(画布){
int width=canvas.getWidth();
int height=canvas.getHeight();
对于(int i=2;i<10;i++){
startX=宽度/2-矩形/2;
startY=i*100;
stopX=宽度/2+矩形/2;
stopY=i*100;
帆布。抽绳(startX、startY、stopX、stopY、红色);
}
对于(int i=2;i<10;i++){
startX=i*100;
星形=高度/2-矩形/2;
stopX=i*100;
stopY=高度/2+矩形/2;
帆布。抽绳(startX、startY、stopX、stopY、红色);
}
}
}
startX=width/2-矩形/2;把这样的语句放在循环中是没有意义的,因为它与i无关。把它们放在循环之前。这将使代码更清晰。在此之后,重新思考如何在循环中绘制水平线。然后垂直线如何在一个循环中。你没有告诉现在出了什么问题。什么样的模式是由第一个for循环?我尝试了很多不同的循环,我不能得到它显示10x10在屏幕中部。我知道如何制作网格布局,我只是不知道如何制作,所以无论屏幕大小如何,中心都是10x10的网格,这就是为什么我开始使用canvas.getHeight和width。当然,你应该马上告诉我。但你还是应该从循环中去掉所有这些语句。然后,如果屏幕宽度为1024,则告诉网格的位置,例如:float startX;浮动stopX;浮星;浮动采矿法;您应该使它们成为onDraw的局部变量。仅在使用变量的位置声明变量。startX=width/2-rectSide/2;把这样的语句放在循环中是没有意义的,因为它与i无关。把它们放在循环之前。这将使代码更清晰。在此之后,重新思考如何在循环中绘制水平线。然后垂直线如何在一个循环中。你没有告诉现在出了什么问题。什么样的模式是由第一个for循环?我尝试了很多不同的循环,我不能得到它显示10x10在屏幕中部。我知道如何制作网格布局,我只是不知道如何制作,所以无论屏幕大小如何,中心都是10x10的网格,这就是为什么我开始使用canvas.getHeight和width。当然,你应该马上告诉我。但你还是应该从循环中去掉所有这些语句。然后,如果屏幕宽度为1024,则告诉网格的位置,例如:float startX;浮动stopX;浮星;浮动采矿法;您应该使它们成为onDraw的局部变量。仅在使用变量的位置声明变量。startX=width/2-rectSide/2;把这样的语句放在循环中是没有意义的,因为它与i无关。把它们放在循环之前。这将使代码更清晰。在此之后,重新思考如何在循环中绘制水平线。然后垂直线如何在一个循环中。你没有告诉现在出了什么问题。什么样的模式是由第一个for循环?我尝试了很多不同的循环,我不能得到它显示10x10在屏幕中部。我知道如何制作网格布局,我只是不知道如何制作,所以无论屏幕大小如何,中心都是10x10的网格,这就是为什么我开始使用canvas.getHeight和width。当然,你应该马上告诉我。但你还是应该从循环中去掉所有这些语句。然后,如果屏幕宽度为1024,则告诉网格的位置,例如:float startX;浮动stopX;浮星;浮动采矿法;您应该使它们成为onDraw的局部变量。仅在使用变量的地方声明变量。