用GraphView制作条

时间:2018-08-29 15:07:08

标签: android graph android-graphview

我已经使用Graphview已有一段时间了,大部分时间是LineGraphPointGraph,可以在Link to GraphView上找到指向GraphView的链接。

但是现在我需要一个LineGraph,它可以在需要时填充整个0-100和100-200。例如,当点为70时,它将填充整个0-100空间,看起来像这样。

另一个要求是,仍然需要像LineGraph一样,因为它需要能够向右移动。

enter image description here

有人知道如何使用GraphView完成此操作,或者是否可以完全使用GraphView完成此操作。

或者也许,如果我将点设置为50,并且将线宽设置为正好覆盖+/- 50,那么它也将相同,但是这里的问题是每个屏幕上的线宽都不同。

1 个答案:

答案 0 :(得分:1)

您可以为PointGraphSeries使用自定义形状以获得所需的效果。在以下代码中,我将创建一个自定义矩形。这样可以为您提供一些操作建议:

int mX = 0;

private void addPoints(double point, PointsGraphSeries<DataPoint> series) {
    point = Math.floor(point / 100) * 100;
    DataPoint dataPoint = new DataPoint(mX++, point);
    series.appendData(dataPoint, false, 100);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GraphView graph = findViewById(R.id.graph);
    // Set manual X bounds
    graph.getViewport().setXAxisBoundsManual(true);
    graph.getViewport().setMinX(0);
    graph.getViewport().setMaxX(10);


    // Set manual Y bounds
    graph.getViewport().setYAxisBoundsManual(true);
    graph.getViewport().setMinY(0);
    graph.getViewport().setMaxY(1000);

    // Set up the number of division for horizontal and vertical units
    graph.getGridLabelRenderer().setNumHorizontalLabels(11);
    graph.getGridLabelRenderer().setNumVerticalLabels(11);

    PointsGraphSeries<DataPoint> series = new PointsGraphSeries<>();

    series.setCustomShape(new PointsGraphSeries.CustomShape() {
        @Override
        public void draw(Canvas canvas,
                         Paint paint,
                         float x,
                         float y,
                         DataPointInterface dataPoint) {
            canvas.drawRect(x, y - 100, x + 175, y, paint);
        }
    });

    int[] points = {450, 512, 323, 240, 70, 790};
    for (int i = 0; i < points.length; i++) {
        addPoints(points[i], series);
    }

    graph.addSeries(series);
}

这将根据提供的要点为您提供以下图片:

enter image description here

相关问题