Android 定期重新绘制图形视图图表
我是android新手,现在我想写一个应用程序,显示一个8000双精度的数组,它是图表上的正弦和cos信号,每7秒,正弦图表将变为cos,反之亦然。我使用GraphView类来绘制图表。但我不能每7秒改变一次图表,它只是第一次画出来,不会再改变了。创建时的方法如下所示: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(
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演示项目中的示例