3
Code Demo vẽ biểu đồ Chart trong android dùng AchartEngine
Posted by chazo1994
on
06:41
in
Lập trình
ACHARTENGINE
Đây là code class demo vẽ đồ họa bằng achartengine
trước tiên vào đây để Download thư viện (down file jar)
trong android studio chuyển sang chế độ project copy file jar và paste vào thư mục libs
trong android studio chuyển sang chế độ project copy file jar và paste vào thư mục libs
rồi chuyển về chế độ android
vào app -> build.grade (module) tìm để phần dependency{ .. } thêm dòng này vào
compile files('libs/achartengine120.jar')"achartengine120" sửa thành tên file jar của bạn
sau đó ấn build vậy là dùng đc thư viện achartengine rùi!!!
sau đây là class mình viết demo và có giải thích vài phần trong đó
package com.example.thinh.designfilter.Util; import android.graphics.Color; import android.graphics.Paint; import android.widget.LinearLayout; import com.example.thinh.designfilter.DrawFilterActivity; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; /** * Created by thinh on 11/22/2015. * class manage drawable Chart on Activity */ public class DrawSignal { private GraphicalView myChart; private XYSeriesRenderer signalRenderer; private XYSeries signalSeries; private XYMultipleSeriesRenderer mySeriesRender; private XYMultipleSeriesDataset mySeriesDataset; private LinearLayout llChart; // draw chart on listview of activity private DrawFilterActivity drawFilterActivity; public DrawSignal(DrawFilterActivity drawFilterActivity, LinearLayout llChart ){ this.llChart = llChart; this.drawFilterActivity = drawFilterActivity; } /* * initialize all configuration to Chart * */ public void initChart(){ signalRenderer = new XYSeriesRenderer(); mySeriesRender = new XYMultipleSeriesRenderer(); mySeriesDataset = new XYMultipleSeriesDataset(); //creat signal and filter that you want draw signalSeries = new XYSeries("pulse"); // set XYSeriesRender to render data on screen signalRenderer.setColor(Color.BLUE); signalRenderer.setDisplayBoundingPoints(true); signalRenderer.setPointStyle(PointStyle.CIRCLE); signalRenderer.setPointStrokeWidth(1); //set Render Control full chart (control: color, axist, background , line ...) mySeriesRender.addSeriesRenderer(signalRenderer); mySeriesRender.setPanEnabled(false, false); mySeriesRender.setYAxisMax(0.5); mySeriesRender.setYAxisMin(0); mySeriesRender.setShowGrid(true); mySeriesRender.setGridColor(Color.BLACK); mySeriesRender.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00)); // transparent margin mySeriesRender.setXLabels(10); mySeriesRender.setYLabels(10); mySeriesRender.setXLabelsColor(Color.BLUE); mySeriesRender.setYLabelsColor(0, Color.BLUE); mySeriesRender.setAxisTitleTextSize(5); mySeriesRender.addXTextLabel(mySeriesRender.getXAxisMax(), "n"); mySeriesRender.addYTextLabel(mySeriesRender.getYAxisMax(), "h[n]"); mySeriesRender.setPointSize(4); // add data signal and filter to dataset mySeriesDataset.addSeries(signalSeries); /*mySeriesDataset.addSeries(filterSeries);*/ } /* * Add data to XYSeries * */ public void addData(double[] filters,int M){ for(int i = 0; i<M;i++){ signalSeries.add(i,filters[i]); } } /* * here is code to draw data in object signalRenderer on screen managed by mySeriesRender */ public void DrawChart(double[] filters, int M){ initChart(); addData(filters,M); GraphicalView gvChart = ChartFactory.getLineChartView(drawFilterActivity, mySeriesDataset, mySeriesRender); //GraphicalView gvChart = ChartFactory.getBarChartView(drawFilterActivity, mySeriesDataset, mySeriesRender, BarChart.Type.DEFAULT); llChart.addView(gvChart); } }