2016-10-28 1 views
0

AndroidPlot을 사용하여 실시간 차트를 만들려고합니다. 타이머를 기반으로하는 시리즈에 값을 추가합니다. 이 깜박임 문제를 해결하는 방법. 추신 : 나는 안드로이드에 새로운 오전 androidPlot 나의 현재 코드는 ->Android 플롯 깜박임 문제

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)); 
} 

또한 같은 임의의 인스턴스를 재사용하는 대신 새로운마다 초기화 건의 할 것입니다.