【问题标题】:How to create graph with edges and vertices in Android如何在 Android 中创建带有边和顶点的图形
【发布时间】:2017-04-04 07:59:33
【问题描述】:

我想创建图形(带有边和顶点),以实现一个称为 3 色的问题。我只需要一些关于如何开始的指导,我应该使用多个视图并将每个视图绘制为一个圆圈,然后如何连接视图之间的线(边)?我应该一直使用像素还是有另一种方法,更简单的方法是因为在处理大图(超过 10 个顶点)时计算像素很复杂。

谢谢。

【问题讨论】:

  • 我不是以这种方式谈论图形,我在谈论具有边和顶点的图形,你可以谷歌它,看看我在说什么。

标签: android android-canvas android-drawable graph-theory android-paint


【解决方案1】:

你想要的是drawing on Canvas

作为一个基本示例,您可以看到这段代码,它将创建 2 个顶点和一条连接它们的边:

public class MyView extends View {

    private final Paint p;
    private final Path path;
    private final Point point1;
    private final Point point2;

    public MyView(Context context) {
        super(context);

        p = new Paint(Paint.ANTI_ALIAS_FLAG);
        p.setStrokeWidth(10);
        path = new Path();

        point1 = new Point(200, 300);
        point2 = new Point(700, 800);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // draw first vertex
        p.setStyle(Paint.Style.FILL);
        p.setColor(Color.GREEN);
        canvas.drawCircle(point1.x, point1.y, 15, p);

        // draw the edge
        path.reset();
        path.moveTo(point1.x, point1.y);
        path.lineTo(point2.x, point2.y);
        p.setStyle(Paint.Style.STROKE);
        p.setColor(Color.CYAN);
        canvas.drawPath(path, p);

        // draw second vertex
        p.setStyle(Paint.Style.FILL);
        p.setColor(Color.BLUE);
        canvas.drawCircle(point2.x, point2.y, 15, p);
    }
}

这将导致:

【讨论】:

  • 问题是我怎么才能有一个点击监听器呢?当有人触摸顶点时,我想更改顶点的颜色。谢谢。我还需要对每个顶点和每个边的引用,所以我不知道这是否是正确的方法。
  • 您必须自己处理触摸事件,因为它是自定义视图。基本上,您必须监听触摸事件,获取它的 (x,y) 坐标,查看该坐标中布置的顶点并处理点击事件。没有直接的方法可以做到这一点。这就是为什么它被称为自定义视图。
【解决方案2】:

我发现这个库是一个很好的来源: https://github.com/LordVulkan/Graphs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多