My code is:
private XYMultipleSeriesDataset HRDataset = new XYMultipleSeriesDataset(); private XYMultipleSeriesRenderer HeartRateRenderer = new XYMultipleSeriesRenderer(); private XYSeries HRCurrentSeries; private GraphicalView HRChartView;
in onResume ():
if (HRChartView == null) { LinearLayout layout = (LinearLayout) findViewById(R.id.HRchart); HRChartView = ChartFactory.getLineChartView(this, HRDataset, HeartRateRenderer); layout.addView(HRChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // boolean enabled = HRDataset.getSeriesCount() > 0; // setSeriesEnabled(enabled); } else { HRChartView.repaint(); }
in onCreate ():
HeartRateRenderer.setAxisTitleTextSize(16); HeartRateRenderer.setChartTitleTextSize(20); HeartRateRenderer.setLabelsTextSize(15); HeartRateRenderer.setLegendTextSize(15); HeartRateRenderer.setMargins(new int[] {20, 30, 15, 0}); HeartRateRenderer.setAxesColor(Color.YELLOW); String seriesTitle = "Heart Rate"; XYSeries series = new XYSeries(seriesTitle); HRDataset.addSeries(series); HRCurrentSeries = series; XYSeriesRenderer renderer = new XYSeriesRenderer(); renderer.setColor(Color.RED); HeartRateRenderer.addSeriesRenderer(renderer);
I have a service that receives data from a Blue Tooth device. When new data appears, I call this function:
public void setupHRChart(double x, double y) { HRCurrentSeries.add(x, y); if (HRChartView != null) { HRChartView.repaint(); } }
in manifest:
<activity android:name="org.achartengine.GraphicalActivity" />
in my layout:
<LinearLayout android:id="@+id/HRchart" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="300px" android:layout_weight="1" />
- Good luck that helps.
source share