Graphview一次添加所有新条目

时间:2019-04-17 13:11:11

标签: android android-graphview

我正在编写一个应该给我声音图的应用程序。 我正在为此使用graphview库。

像任何图一样,我有两个轴。幅度和时间轴。我使用两种方法绘制图形。第一种方法是绘制图形(drawGraph)和添加一个单项(addEntry)的方法。 我从PCM文件中获取幅度和时间数据(实际上我仅从PCM文件中获取幅度数据,但这不是重点),它们采用双精度数组的形式。

当我调用drawGraph时,我使用一个简单的for循环分别提取每个点,然后使用drawGraph绘制每个点。

SomeButton.setOnClickListener(new View.OnClickListener() 
{
@Override
public void onClick(View view) 
{
    double[] AmplitudeAxis = readPCM();
    double[] TimeAxis= new double[AmplitudeAxis.length];
    for (int i = 0; i < AmplitudeAxis.length; i++)
    {
        TimeAxis[i]=i;
    }
    drawGraph(TimeAxis,AmplitudeAxis);
}

 private void drawGraph(double TimeAxis[], double AmplitudeAxis[])
{
    for (int i=0; i<10000;i++)
    {
        addEntry(TimeAxis[i],AmplitudeAxis[i]);
    }
}

private void addEntry(double a, double b)
{
    series.appendData(new DataPoint(a, b), true, 500000);
}

如果我有少量样品,这很好用。 (1000以下) 但是,当我使用更多(1000-5000)时,该应用程序冻结了几秒钟,几秒钟后,所有样本均显示在图表上。 但是,当我有大量样本时,该应用程序将完全冻结。

由于某些原因,当我使用appendata时,它不会在图形上绘制点。但是它要等到drawGraph完成给出新点以绘制图形之后。

引人注意的第一件事是,仅在drawGraph中的for循环完成之后才绘制图形。我希望在series.appendData(...)之后画点。

我希望该应用程序冻结,因为它必须在任何时候处理太多点。任何人都对此有经验(甚至可以更好地解决此问题)?

0 个答案:

没有答案