2016-04-11 26 views
0

我已經看過github資源,也有here,但我無法讓我的圖顯示實時數據。這是我的代碼。如何使用實時數據更新裝飾圖表?

public class Blink_HR extends Fragment { 
TextView textView; 
LinearLayout linearLayout; 
DecoView mDecoView; 
private int mBackIndex; 
private int mSeries1Index; 
private int mSeries2Index; 
private int mSeries3Index; 
private final float 
     mSeriesMax = 50f; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.blink_hr, container, false); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    textView = (TextView) getActivity().findViewById(R.id.meditation); 
    linearLayout = (LinearLayout) getView().findViewById(R.id.blinkHR); 
    mDecoView = (DecoView)getActivity().findViewById(R.id.dynamicArcView); 

    mDecoView.addEvent(new DecoEvent.Builder(mSeriesMax) 
      .setIndex(mBackIndex) 
      .setDuration(10) 
      .build()); 


    SeriesItem seriesItem = new SeriesItem.Builder(Color.parseColor("#FFE2E2E2")) 
      .setRange(0, mSeriesMax, 0) 
      .setInitialVisibility(true) 
      .build(); 

    mBackIndex = mDecoView.addSeries(seriesItem); 
} 




void update(int id, int value) { 
    String heart = String.valueOf(value); 
    Log.d("Blink Hai", heart); 

    if (value > 0 && mDecoView!=null && mSeries1Index!=0) { 
     SeriesItem seriesItem = new SeriesItem.Builder(Color.parseColor("#FFFF8800")) 
       .setRange(0, (float)value, 0) 
       .setInitialVisibility(false) 
       .build(); 
     mSeries1Index = mDecoView.addSeries(seriesItem); 
    } 

    if (mDecoView != null) { 
     mDecoView.addEvent(new DecoEvent.Builder(42.4f) 
       .setIndex(mSeries1Index) 
       .setDelay(3250) 
       .build()); 
     mDecoView.executeReset(); 
    } 
} 

}

我的更新函數被調用每1秒,我希望圖表更新實時這個數據。不過,我所得到的只是屏幕上的一個飛艇。

回答

2

有一個與代碼

  • 的事件mBackIndex之前加入到系列mBackIndex已初始化

  • 更新被觸發每1秒鐘,但3.25秒的延遲是幾個問題添加到事件之前它將被處理

  • 更新事件總是將DecoView的位置設置爲42.4

  • executeReset()被稱爲每次更新被觸發時,該 復位所有系列在圖表,並取消所有未決的動畫

下面是一些示例代碼,將更新DecoView每1秒爲一個隨機動畫位置

public class FauxFitActivity extends AppCompatActivity { 

    private DecoView mDecoView; 
    private int mSeries1Index; 
    private final float mSeriesMax = 50f; 
    private Handler mHandler = new Handler(); 
    Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      update(); 
      mHandler.postDelayed(this, 1000); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_faux_fit); 

     mDecoView = (DecoView) findViewById(R.id.dynamicArcView); 
     createDataSeries1(); 

     // Start the timer 
     mHandler.post(runnable); 

    } 

    private void createDataSeries1() { 
     final SeriesItem seriesItem = new SeriesItem.Builder(Color.parseColor("#FFFF8800")) 
       .setRange(0, mSeriesMax, 0) 
       .setInitialVisibility(false) 
       .build(); 

     mSeries1Index = mDecoView.addSeries(seriesItem); 
    } 

    private void update() { 
     final Random rand = new Random(); 
     int newPosition = rand.nextInt((int)mSeriesMax); 

     mDecoView.addEvent(new DecoEvent.Builder(newPosition).setIndex(mSeries1Index).setDuration(1000).build()); 
    } 
}