首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android-graphview动态设置值

android-graphview动态设置值
EN

Stack Overflow用户
提问于 2016-11-30 02:21:22
回答 2查看 2K关注 0票数 0

所以我使用android-graphview (https://github.com/jjoe64/GraphView)。

在从源获取数据时,我正试图弄清楚如何以编程方式将DataPoints逐个添加到该系列中。

目前医生说要做的是:

代码语言:javascript
复制
LineGraphSeries<DataPoint> series2 = new LineGraphSeries<>(new DataPoint[] {
    new DataPoint(0, 4),
    new DataPoint(1, 5),
    new DataPoint(2, 2),
    new DataPoint(3, 1),
    new DataPoint(4, 10)
});

但我希望能够动态添加/创建,因为我的for循环获得了这些数据点。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-08 15:07:09

最简单的方法是将数据追加到已有的序列中,该序列已添加到图形中。

代码语言:javascript
复制
GraphView graph = (GraphView) findViewById(R.id.gv);
LineGraphSeries<DataPoint> lineGraphSeries = new LineGraphSeries<>();

graph.addSeries(lineGraphSeries);

DataPoint dataPoint = sth...
lineGraphSeries.appendData(dataPoint);
票数 1
EN

Stack Overflow用户

发布于 2016-11-30 03:55:41

代码语言:javascript
复制
public class AddSeriesAtRuntime extends BaseExample {
    private Activity mActivity;

    @Override
    public void onCreate(FullscreenActivity activity) {
        mActivity = activity;
        GraphView graph = (GraphView) activity.findViewById(R.id.graph);
        initGraph(graph);
    }

    @Override
    public void initGraph(final GraphView graph) {
        Button btn = (Button) mActivity.findViewById(R.id.btnAddSeries);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                graph.addSeries(new LineGraphSeries(generateData()));
            }

        });

        btn = (Button) mActivity.findViewById(R.id.btnClear);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                graph.removeAllSeries();
            }
        });
    }

    private DataPoint[] generateData() {
        Random rand = new Random();
        int count = 30;
        DataPoint[] values = new DataPoint[count];
        for (int i=0; i<count; i++) {
            double x = i;
            double f = rand.nextDouble()*0.15+0.3;
            double y = Math.sin(i*f+2) + rand.nextDouble()*0.3;
            DataPoint v = new DataPoint(x, y);
            values[i] = v;
        }
        return values;
    }
}

来源:https://github.com/jjoe64/GraphView-Demos/blob/master/app/src/main/java/com/jjoe64/graphview_demos/examples/AddSeriesAtRuntime.java

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40873017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档