在 Android 中使用 Circles(字面上)绘制一棵树 - 不是树视图结构
Draw a tree (literally) using Circles in Android - Not a Tree View Structure
我一直在努力在Android中画一个树形结构。我需要单独在底部绘制树形结构和树枝。树的实际叶子将以圆圈的形式表示。我已经开始通过获取屏幕的宽度和高度来绘制圆圈了。我的代码如下:
最初我得到了屏幕的宽度和高度:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
System.out.println("Width is " + width + "Height is " + height);
scrWidth = width;
scrHeight = height;
然后我创建了一个具有相同颜色的 Paint object 并通过 for
循环迭代它多次绘制圆圈:
class Panel extends View {
public Panel(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(20);
paint.setStyle(styles[0]);
}
@Override
public void onDraw(Canvas canvas) {
setWillNotDraw(false);
for (int i = 0; i < name.length; i++) {
x = (int) ((scrWidth / 360.0) * (90 + longitude[i]));
y = (int) ((scrHeight / 180.0) * (90 - latitude[i]));
paint.setStyle(styles[0]);
canvas.drawCircle(x, y, 25, paint);
invalidate();
System.out.println(x + "x" + name[i]);
System.out.println(y + "y" + name[i]);
}
}
我实际上已经硬编码了纬度和经度的值,如下所示:
Double longitude[] = new Double[]{0.0,62.2,122.2};
Double latitude[] = new Double[]{40.2, 40.2, 40.2};
我不想 hard-code lat 和 long 的值,但我不确定需要什么样的数学计算才能动态地找到它,所以我完全处于黑暗之中。如果有人帮助我,那就太好了!!!任何可以帮助我为最终作品铺平道路的参考资料都是最受欢迎的,因为我知道很难找到这些东西的库或现成的代码。
P.S : 我实际上不确定 OpenGL 是否会帮助我解决这些问题,但我很想亲身体验一下,所以任何参考这也很受欢迎。
下图是我真正想要的图片:
我最终使用 Canvas
和 Path
class 创建了上面的树。 Canvas 代表树叶,路径代表树枝。这是一个乏味且耗时的过程,我建议其他人不要走这条路,因为它需要很长时间才能加载,导致它试图用 Canvas 做太多工作,而且我经常遇到内存问题。我仍然面对他们。希望它能帮助别人。
我一直在努力在Android中画一个树形结构。我需要单独在底部绘制树形结构和树枝。树的实际叶子将以圆圈的形式表示。我已经开始通过获取屏幕的宽度和高度来绘制圆圈了。我的代码如下:
最初我得到了屏幕的宽度和高度:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
System.out.println("Width is " + width + "Height is " + height);
scrWidth = width;
scrHeight = height;
然后我创建了一个具有相同颜色的 Paint object 并通过 for
循环迭代它多次绘制圆圈:
class Panel extends View {
public Panel(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(20);
paint.setStyle(styles[0]);
}
@Override
public void onDraw(Canvas canvas) {
setWillNotDraw(false);
for (int i = 0; i < name.length; i++) {
x = (int) ((scrWidth / 360.0) * (90 + longitude[i]));
y = (int) ((scrHeight / 180.0) * (90 - latitude[i]));
paint.setStyle(styles[0]);
canvas.drawCircle(x, y, 25, paint);
invalidate();
System.out.println(x + "x" + name[i]);
System.out.println(y + "y" + name[i]);
}
}
我实际上已经硬编码了纬度和经度的值,如下所示:
Double longitude[] = new Double[]{0.0,62.2,122.2};
Double latitude[] = new Double[]{40.2, 40.2, 40.2};
我不想 hard-code lat 和 long 的值,但我不确定需要什么样的数学计算才能动态地找到它,所以我完全处于黑暗之中。如果有人帮助我,那就太好了!!!任何可以帮助我为最终作品铺平道路的参考资料都是最受欢迎的,因为我知道很难找到这些东西的库或现成的代码。
P.S : 我实际上不确定 OpenGL 是否会帮助我解决这些问题,但我很想亲身体验一下,所以任何参考这也很受欢迎。
下图是我真正想要的图片:
我最终使用 Canvas
和 Path
class 创建了上面的树。 Canvas 代表树叶,路径代表树枝。这是一个乏味且耗时的过程,我建议其他人不要走这条路,因为它需要很长时间才能加载,导致它试图用 Canvas 做太多工作,而且我经常遇到内存问题。我仍然面对他们。希望它能帮助别人。