2016-10-28 2 views
0

Я пытаюсь создать диаграмму в реальном времени с помощью AndroidPlot. Я добавляю значения в свою серию на основе таймера. Как решить эту мерцающую проблему. Ps: Я новичок в андроид и 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)); 
} 

Я также предлагаю повторно использовать один и тот же случайный экземпляр вместо инициализации новый пароль каждый раз.

Смежные вопросы