AChartEngine绘制图形
AChartEngine是Android作圖的方法之一,要使用AChartEngine,首先下載AChartEngine,按照以下方法將其jar包添加到工程中:
1、將achartengine-1.1.0.jar文件復(fù)制到工程的libs文件夾下;
2、在Eclipse中選中工程,按F5刷新;
3、在Eclipse中選中l(wèi)ibs文件夾下的achartengine-1.1.0.jar,右鍵點擊Build Path-->Add to Build Path。
然后在Manfest文件中加入AChartEngine繪圖的Activity:
<activity android:name = "org.achartengine.GraphicalActivity" />
最后是編寫java文件:
package com.hzhi.chartdemo;import org.achartengine.ChartFactory; import org.achartengine.chart.BarChart.Type; 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;import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.view.Menu;public class MainActivity extends Activity {// 數(shù)據(jù)值double[] dx = new double[]{1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00}; double[] dy = new double[]{5.35,3.67,5.98,9.88,7.21,6.12,5.05,6.44,5.41,9.98}; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);DrawChart();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void DrawChart(){double x,y;// 定義XYMultipleSeriesRendererXYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();// 定義XYMultipleSeriesDatasetXYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();// 定義XYSeriesRendererXYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 定義XYSeriesXYSeries series = new XYSeries("DATA_01");// 將數(shù)據(jù)加入series for (int i=0; i<10; i++){x = dx[i];y = dy[i];series.add(x,y);} // 將series加入datasetdataset.addSeries(series);// 設(shè)置系列顏色xyRenderer.setColor(Color.YELLOW);// 設(shè)置系列點樣式xyRenderer.setPointStyle(PointStyle.SQUARE);// 設(shè)置系列點寬度xyRenderer.setPointStrokeWidth(10);// 設(shè)置系列點樣式xyRenderer.setLineWidth(5);// 將xyRenderer加入rendererrenderer.addSeriesRenderer(xyRenderer);// 設(shè)置圖表標(biāo)題renderer.setChartTitle("AChartEngine DEMO");renderer.setChartTitleTextSize(30);// 設(shè)置圖表標(biāo)題X,Y軸的標(biāo)題及樣式renderer.setXTitle("X VALUES"); renderer.setYTitle("Y VALUES");renderer.setAxisTitleTextSize(30); renderer.setYLabelsPadding(20);// 設(shè)置坐標(biāo)軸數(shù)值的字體renderer.setLabelsTextSize(30);// 坐標(biāo)軸的最大、最小值renderer.setXAxisMax(10);renderer.setXAxisMin(0);renderer.setYAxisMax(10);renderer.setYAxisMin(0);// 設(shè)置圖表背景顏色renderer.setBackgroundColor(Color.BLACK);renderer.setApplyBackgroundColor(true);// 設(shè)置圖表的Margins數(shù)組(1.上,2.左,3.下,4.右) int[] m = new int[]{80,80,20,20};renderer.setMargins(m);// 是否顯示圖例renderer.setShowLegend(false);// 顯示網(wǎng)格renderer.setShowGrid(true);// 網(wǎng)格顏色renderer.setGridColor(Color.WHITE);// 繪制曲線圖Intent intent = ChartFactory.getLineChartIntent(this, dataset, renderer);startActivity(intent);}}
由于顯示的是org.achartengine.GraphicalActivity,所以在onCreate(Bundle savedInstanceState)方法中,刪掉setContentView()語句,用繪圖函數(shù)DrawChart()替代。
DrawChart()首先定義了幾個變量。XYMultipleSeriesRenderer是整個圖形,XYSeriesRenderer是圖形里面的一個系列;XYMultipleSeriesDataset是整個圖形的數(shù)據(jù)集,XYSeries是圖形里面一個系列的數(shù)據(jù)集。
首先將多組成對的X值和Y值加入XYSeries,再將XYSeries加入XYMultipleSeriesDataset。然后設(shè)置XYSeriesRenderer的一些屬性,再將設(shè)置好的XYSeriesRenderer加入XYMultipleSeriesRenderer。如果有多個系列,可以重復(fù)上述過程,只要保證一個XYSeries對應(yīng)一個XYSeriesRenderer即可。最后設(shè)置XYMultipleSeriesRenderer的一些屬性,即整個圖形的屬性。
設(shè)置好以后,用ChartFactory.getLineChartIntent()函數(shù)繪制曲線圖。如果繪制條形圖,用getBarChartIntent(),繪制餅圖用getPieChartIntent(),還有其他一些圖形,就不一一例舉了。
繪制出的圖形如下:
?
?
總結(jié)
以上是生活随笔為你收集整理的AChartEngine绘制图形的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Phone 开发起步之旅
- 下一篇: awk中$NF和NF的含义