2

我正在使用 GraphView 库,当我更新系列(或用新系列替换系列)时,我无法让图形自行重绘。当我触摸屏幕时,它似乎只会重新绘制自己。这是我的更新功能。

private void updateGraph(Animal a)
{
    Toast.makeText(getApplicationContext(), "Updating Graph", Toast.LENGTH_SHORT).show();
    GraphViewData[] newData = new GraphViewData[2];
    newData[0] = new GraphViewData(0,a.getAvg());
    newData[1] = new GraphViewData(1,0.2);

    GraphViewSeries newSeries = new GraphViewSeries(a.getName(),dStyle,newData);

    graph.removeSeries(exampleSeries);
    graph.addSeries(newSeries);
    //update horizontal value
    //graph.setHorizontalLabels(new String[]{a.getName()});
}
4

2 回答 2

1

我想到了...

//test random y value
    double rnd = generator.nextDouble();

    // round is an incremental value (1,2,3...)
    GraphViewData newData = new GraphViewData(round,rnd);

    exampleSeries.appendData(newData, false);
    graph.redrawAll();
于 2013-05-30T14:28:31.223 回答
0

使用onDataChanged让图形重绘并重新计算视口。

graph.onDataChanged(true, true);

注意两个参数keepLabelsSizekeepViewport。正如 Javadoc 所说:

  • @param keepLabelsSize
    如果您不想重新计算标签的大小,则为 true。建议使用“true”,因为这将提高性能并防止闪烁。
  • @param keepViewport
    如果您不希望重新计算视口,则为 true。建议使用“true”来提高性能。

无论如何,请记住,onDataChanged当添加或删除新系列以及通过appendDataresetData添加数据时,它会被隐式调用。onDataChanged因此,在大多数情况下,不需要手动调用in。

于 2019-12-18T15:07:43.063 回答