我是android的新手。我正在使用Achartengine绘制一个从二进制文件中读取值的动态图形。下面是我的代码,我想有一个动态的运行图,其中的值是定期更新的。为此,我尝试使用计时器和不使用计时器。但每次当最后的值被更新时,我都会得到带有最终值的图形。我的意思是,在所有的更新都完成之后,我会得到一个静态的图形。我想不出该怎么纠正这个问题。我正在使用模拟器来测试代码。会不会是模拟器有问题,或者我的代码有问题?提前感谢
不带计时器的代码:
public class RandomActivity extends Activity {
private XYMultipleSeriesDataset eeg1 = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer renderer_eeg1 = new XYMultipleSeriesRenderer();
private XYSeries series1;
private GraphicalView view_eeg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
renderer_eeg1.setAxisTitleTextSize(16);
renderer_eeg1.setChartTitleTextSize(20);
renderer_eeg1.setLabelsTextSize(15);
renderer_eeg1.setLegendTextSize(15);
renderer_eeg1.setMargins(new int[] {20, 30, 15, 0});
renderer_eeg1.setAxesColor(Color.BLUE);
renderer_eeg1.setXTitle("Time");
renderer_eeg1.setChartTitle("eeg1");
XYSeriesRenderer seriesrenderer1 = new XYSeriesRenderer();
seriesrenderer1.setColor(Color.YELLOW);
renderer_eeg1.addSeriesRenderer(seriesrenderer1);
series1= new XYSeries("eeg1");
eeg1.addSeries(series1);
int a;
int b;
add();
for(int r=0;r<=600;r++){
if(r%2==0){
a=1;
b=-1;
}
else{
a=-1;
b=1;
}
series1.add(r, a);
if(r<=50){
renderer_eeg1.setXAxisMax(50);
}
else if(r>50){
double maxX = series1.getMaxX();
double minX = maxX - 50;
renderer_eeg1.setXAxisMin(minX);
}
view_eeg1.repaint();
}
}
protected void onResume() {
super.onResume();
if (view_eeg1== null) {
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view_eeg1= ChartFactory.getLineChartView(this, eeg1, renderer_eeg1);
layout_eeg1.addView(view_eeg1,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
view_eeg1.repaint();}
}
}使用计时器的代码:
public class RandomActivity extends Activity {
private XYMultipleSeriesDataset eeg1 = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer renderer_eeg1 = new XYMultipleSeriesRenderer();
private XYSeries series1;
private GraphicalView view_eeg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
renderer_eeg1.setAxisTitleTextSize(16);
renderer_eeg1.setChartTitleTextSize(20);
renderer_eeg1.setLabelsTextSize(15);
renderer_eeg1.setLegendTextSize(15);
renderer_eeg1.setMargins(new int[] {20, 30, 15, 0});
renderer_eeg1.setAxesColor(Color.BLUE);
renderer_eeg1.setXTitle("Time");
renderer_eeg1.setChartTitle("eeg1");
XYSeriesRenderer seriesrenderer1 = new XYSeriesRenderer();
seriesrenderer1.setColor(Color.YELLOW);
renderer_eeg1.addSeriesRenderer(seriesrenderer1);
series1= new XYSeries("eeg1");
eeg1.addSeries(series1);
int a;
int b;
add();
for(int r=0;r<=600;r++){
Thread timer = new Thread(){
public void run(){
try{
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
if(r%2==0){
a=1;
b=-1;
}
else{
a=-1;
b=1;
}
series1.add(r, a);
if(r<=50){
renderer_eeg1.setXAxisMax(50);
}
else if(r>50){
double maxX = series1.getMaxX();
double minX = maxX - 50;
renderer_eeg1.setXAxisMin(minX);
}
view_eeg1.repaint();
}
}
protected void onResume() {
super.onResume();
if (view_eeg1== null) {
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view_eeg1= ChartFactory.getLineChartView(this, eeg1, renderer_eeg1);
layout_eeg1.addView(view_eeg1,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
view_eeg1.repaint();}
}
}发布于 2012-07-12 01:11:45
< code >G211
我认为这会更好地工作:
public class RandomActivity extends Activity {
private XYMultipleSeriesDataset eeg1 = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer renderer_eeg1 = new XYMultipleSeriesRenderer();
private XYSeries series1;
private GraphicalView view_eeg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
renderer_eeg1.setAxisTitleTextSize(16);
renderer_eeg1.setChartTitleTextSize(20);
renderer_eeg1.setLabelsTextSize(15);
renderer_eeg1.setLegendTextSize(15);
renderer_eeg1.setMargins(new int[] {20, 30, 15, 0});
renderer_eeg1.setAxesColor(Color.BLUE);
renderer_eeg1.setXTitle("Time");
renderer_eeg1.setChartTitle("eeg1");
XYSeriesRenderer seriesrenderer1 = new XYSeriesRenderer();
seriesrenderer1.setColor(Color.YELLOW);
renderer_eeg1.addSeriesRenderer(seriesrenderer1);
series1= new XYSeries("eeg1");
eeg1.addSeries(series1);
int a;
Thread timer = new Thread(){
public void run(){
try{
for(int r=0;r<=600;r++){
sleep(500);
if(r%2==0){
a=1;
}
else{
a=-1;
}
series1.add(r, a);
if(r<=50){
renderer_eeg1.setXAxisMax(50);
}
else if(r>50){
double maxX = series1.getMaxX();
double minX = maxX - 50;
renderer_eeg1.setXAxisMin(minX);
}
view_eeg1.repaint();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
timer.start()
}
protected void onResume() {
super.onResume();
if (view_eeg1== null) {
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view_eeg1= ChartFactory.getLineChartView(this, eeg1, renderer_eeg1);
layout_eeg1.addView(view_eeg1,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
view_eeg1.repaint();}
}
}
}
}https://stackoverflow.com/questions/11304749
复制相似问题