Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Android中使用Circles绘制树(字面意思) – 不是树视图结构大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在努力在 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对象,并通过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]);

            }

        }

我实际上已经对lat和long的值进行了硬编码,如下所示:

Double longitude[] = new Double[]{0.0,62.2,122.2};
Double latitude[] = new Double[]{40.2,40.2,40.2};

我不想硬编码lat和long的值,但我不确定需要什么样的数学计算才能动态地找到它,所以我完全处于黑暗状态.如果有人帮助我,那会很棒!任何可以帮助我为最终作品铺平道路的参文献都是最受欢迎的,因为我知道有点难以找到这些类型的库或现成的代码.

P.S:我实际上不确定OpenGL是否会帮助我解决这些问题,但我很乐意接受它,所以对此也提出任何参.

下面描绘的是我真正想要的图片

在Android中使用Circles绘制树(字面意思) – 不是树视图结构

解决方法

我最终使用Canvas和Path类创建了上面的树.叶子的画布和树枝的路径.这是一个单调乏味和耗时的工作,我建议其他人不要采取这条路线,因为它需要很长时间才能加载,因为它试图用Canvas做太多工作,而且我经常遇到内存问题.我还是面对他们.希望它可以帮助某人.

大佬总结

以上是大佬教程为你收集整理的在Android中使用Circles绘制树(字面意思) – 不是树视图结构全部内容,希望文章能够帮你解决在Android中使用Circles绘制树(字面意思) – 不是树视图结构所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。