Android 定期重新绘制图形视图图表

Android 定期重新绘制图形视图图表,android,charts,android-graphview,Android,Charts,Android Graphview,我是android新手,现在我想写一个应用程序,显示一个8000双精度的数组,它是图表上的正弦和cos信号,每7秒,正弦图表将变为cos,反之亦然。我使用GraphView类来绘制图表。但我不能每7秒改变一次图表,它只是第一次画出来,不会再改变了。创建时的方法如下所示: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(

我是android新手,现在我想写一个应用程序,显示一个8000双精度的数组,它是图表上的正弦和cos信号,每7秒,正弦图表将变为cos,反之亦然。我使用GraphView类来绘制图表。但我不能每7秒改变一次图表,它只是第一次画出来,不会再改变了。创建时的方法如下所示:

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text = (TextView)findViewById(R.id.text);
    text2 = (TextView)findViewById(R.id.text2);
    Handler handler = new Handler();
    GraphView graphView = new LineGraphView(
            this
            , "Chart"
        );
    GraphViewData [] data= new GraphViewData [8000];
    for (int i = 0; i < data.length; i++) {
        data [i] = new GraphViewData(i,Math.sin(i*Math.PI/20.0)*40+50);}

    GraphViewSeries graphViewSeries = new GraphViewSeries(data);
    graphView.setManualYAxisBounds(130, 0);
    graphView.setScrollable(true);
    graphView.setScalable(true);
    graphView.getGraphViewStyle().setGridStyle(GridStyle.BOTH);
    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    graphView.getGraphViewStyle().setTextSize(11);
    graphView.addSeries(graphViewSeries);
    final GraphView graphView2 = graphView;
    final LinearLayout layout2=layout;
     runOnUiThread(new Runnable(){
            @Override

            public void run(){

                layout2.removeAllViews();
                layout2.addView(graphView2);
            }
        });

    for (int count = 0; count < 10; count++){
        final int count2=count;

        if(count2%2==0){
            for (int i = 0; i < data.length; i++) {

                data [i] = new GraphViewData(i,Math.sin(i*Math.PI/20.0)*20+50);
            }
        }
        else{

            for (int i = 0; i < data.length; i++) {
                data [i] = new GraphViewData(i,Math.cos(i*Math.PI/20.0)*45+50);

            }

        }

          graphView.removeAllSeries();
          graphViewSeries.resetData(data);
          graphView.addSeries(graphViewSeries);
          final GraphView graphView3=graphView;
          final LinearLayout layout3=layout;
        handler.postDelayed(new Runnable(){
            @Override
            public void run() {
                text2.setText(s);
                graphView3.redrawAll();
                runOnUiThread(new Runnable(){
                    @Override

                    public void run(){

                        layout3.removeAllViews();
                        layout3.addView(graphView3);
                    }
                });

            }
        }, 7000* (count + 1) );
    }

}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView)findViewById(R.id.text);
text2=(TextView)findViewById(R.id.text2);
Handler=newhandler();
GraphView GraphView=新线GraphView(
这
,“图表”
);
GraphViewData[]数据=新GraphViewData[8000];
对于(int i=0;i

我不知道是什么问题。一种方法是,我在循环中创建一个新的GraphView实例,它应该是最终的,但我不想每次都重新绘制所有图表,因为每次它首先绘制图表时,它会向右移动一秒钟,然后展开并放置在适当的位置。我的意思是,我只想每隔7秒重新绘制一次图表,为什么要从图表中删除所有系列

如果您有两个系列,并且希望重置其中的数据,则只需调用GraphViewSeries对象的resetData()方法

看看GraphView演示项目中的示例