2016-10-28 93 views
0

我正在尝试使用AndroidPlot创建实时图表。我基于计时器为我的系列添加值。如何解决这个闪烁问题。 PS:我是新来的Android和androidPlot 我当前的代码 - >Android Plot闪烁问题

import android.graphics.Color; 
import android.graphics.DashPathEffect; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import com.androidplot.util.PixelUtils; 
import com.androidplot.xy.CatmullRomInterpolator; 
import com.androidplot.xy.LineAndPointFormatter; 
import com.androidplot.xy.PointLabelFormatter; 
import com.androidplot.xy.SimpleXYSeries; 
import com.androidplot.xy.XYPlot; 
import com.androidplot.xy.XYSeries; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.Random; 
import java.util.Timer; 
import java.util.TimerTask; 

public class MainActivity extends AppCompatActivity { 

    private XYPlot plot; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // initialize our XYPlot reference: 
     plot = (XYPlot) findViewById(R.id.plot); 
     actualDraw(); 

    } 
    public void actualDraw() 
    { 
     final List<Number> ySeries=new ArrayList<Number>(); 

     Timer timer=new Timer(); 
     LineAndPointFormatter series1Format = new LineAndPointFormatter(Color.RED, Color.WHITE, null, null); 
     final SimpleXYSeries series1 = new SimpleXYSeries(ySeries,SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Series1"); 
     plot.addSeries(series1, series1Format); 
     timer.scheduleAtFixedRate(new TimerTask() 
            { 
             public void run() 
             { 
              plot.clear(); 
              Random random=new Random(); 
              series1.addLast(series1.size(),random.nextInt(100)); 
              plot.addSeries(series1, new LineAndPointFormatter(Color.RED, Color.WHITE, null, null)); 
              plot.redraw(); 
             } 
            }, 
       0,  // run first occurrence immediatetly 
       100); 


    } 


} 

回答

0

你清除整个情节和重新创建/加入您的系列您的每一次计时器触发剧情。相反,您应该将新值添加到该系列并调用重绘。更改TimerTask.run()看起来像这样:

public void run() { 
    plot.clear(); 
    Random random=new Random(); 
    series1.addLast(series1.size(),random.nextInt(100)); 
} 

我也建议重复使用相同的随机实例,而不是每次初始化一个新的。