1.在布局文件中加入LinearLayout布局,如下:

<LinearLayout android:id="@+id/chart"          android:orientation="horizontal"         android:layout_width="fill_parent"          android:layout_height="fill_parent"         android:background="@color/white"         android:layout_weight="1"         />
2.写一个类,封装了画图函数:AchartViewUtil

<pre name="code" class="java">package ujs.testchart.view;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.graphics.Color;import android.graphics.Paint.Align;public class AchartViewUtil {/** * 获取数据 *  * @return 返回XYMultipleSeriesDataset * @yData 设置y轴的数据 */public static XYMultipleSeriesDataset getBarDemoDataset(double[] xData,double[] yData) {XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();XYSeries series = new XYSeries("Demo series " + 1);int length = 255;series.clear();if (yData == null) {yData = xData;}for (int k = 0; k < length; k++) {series.add(xData[k], yData[k]);}dataset.addSeries(series);return dataset;}public static XYMultipleSeriesRenderer getBarDemoRenderer(double yStart,double yEnd) {XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();XYSeriesRenderer r = new XYSeriesRenderer();r.setColor(Color.GREEN);renderer.addSeriesRenderer(r);r.setPointStyle(PointStyle.POINT);// 点的类型(圆形、方形或者没有)r.setFillPoints(false);// 设置点是否实心r.setLineWidth(3);setChartSettings(renderer, yStart, yEnd);return renderer;}public static void setChartSettings(XYMultipleSeriesRenderer renderer,double yStart, double yEnd) {renderer.setMargins(new int[] { 50, 70, 50, 30 }); // 设置图表的外边框(上/左/下/右)renderer.setApplyBackgroundColor(true); // 设置是否显示背景色renderer.setBackgroundColor(Color.argb(00, 265, 265, 265));// 设置背景颜色renderer.setAxisTitleTextSize(16); // 设置轴标题文字的大小renderer.setChartTitleTextSize(10); // 设置整个图表标题文字大小renderer.setLabelsTextSize(22); // 设置刻度显示文字的大小(XY轴都会被设置)renderer.setLegendTextSize(15); // 图例文字大小renderer.setZoomButtonsVisible(false); // 是否显示放大缩小按钮renderer.setPointSize((float) 2); // 设置点的大小(图上显示的点的大小和图例中点的大小都会被设置)renderer.setXAxisMin(320); // 设置X轴的最小值renderer.setXAxisMax(780); // 设置X轴的最大值renderer.setYAxisMin(yStart); // 设置Y轴的最小值renderer.setYAxisMax(yEnd); // 设置Y轴的最大值renderer.setAxesColor(Color.GREEN); // 设置X轴的颜色renderer.setLabelsColor(Color.GREEN); // 设置Y轴的颜色// renderer.setXLabels(6);// //设置x轴显示6个点,根据setChartSettings的最大值和最小值自动计算点的间隔// renderer.setYLabels(8);// //设置y轴显示6个点,根据setChartSettings的最大值和最小值自动计算点的间隔renderer.setShowGridY(false); // 是否显示Y网格renderer.setShowGridX(true); // 是否显示X方向的网格renderer.setGridColor(Color.GRAY); // 设置网格的颜色renderer.setXLabelsAlign(Align.CENTER); // 刻度线与刻度标注之间的相对位置关系renderer.setYLabelsAlign(Align.RIGHT); // 刻度线与刻度标注之间的相对位置关系renderer.setZoomButtonsVisible(false); // 是否显示放大缩小按钮renderer.setPanEnabled(false, true); // 设置是否允许XY轴方向移动renderer.setShowLegend(false); // 设置是否显示图例renderer.setMarginsColor(Color.WHITE); // 设置外框颜色穿透背景色renderer.setXTitle("波长(nm)"); // 设置xy轴的坐标renderer.setYTitle("A/D counts");}}
   

然后有进一步封装了一下:这个就比较简单了:SimplifyUtil.java,这样对数据的支持更好一些

package ujs.nir.jpminispec;import org.achartengine.ChartFactory;import org.achartengine.GraphicalView;import org.achartengine.renderer.XYMultipleSeriesRenderer;import ujs.testchart.view.AchartViewUtil;import android.app.ActionBar.LayoutParams;import android.content.Context;import android.widget.LinearLayout;public class SimplifyUtil {// 依据AchartViewUtil封装的类进一步简化画图步骤public void showView(Context context, LinearLayout layout, double x[],double y[]) {// 图表工具XYMultipleSeriesRenderer renderer = AchartViewUtil.getBarDemoRenderer(0, 50000);layout.removeAllViews(); // 这个方法是用来辅助实现刷新功能GraphicalView mChartView = ChartFactory.getCubeLineChartView(context,AchartViewUtil.getBarDemoDataset(x, y), renderer, 0.3f);// 设置曲线的平滑smooth//mChartView.postInvalidate();layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));}}


3.在Activity中加入代码,显示出控件:



package com.example.achartview;import org.achartengine.ChartFactory;import org.achartengine.GraphicalView;import org.achartengine.renderer.XYMultipleSeriesRenderer;import android.app.ActionBar.LayoutParams;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;import android.widget.LinearLayout;public class MainActivity extends ActionBarActivity {double yData[] = new double[]{0,2,3,4,5,8,9,10};String[] date = new String[]{"0","1","2","3","4","5","6","7"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);XYMultipleSeriesRenderer renderer = DrawableUtil.getBarDemoRenderer(date,0,10);        LinearLayout layout = (LinearLayout) findViewById(R.id.chart);       //绑定控件          SimplifyUtil simplifyUtil = new SimplifyUtil();<span style="white-space:pre"></span>simplifyUtil.showView(ScanSpec.this, layout, xv, resultData);//最后两个对应的是将要填充的x、y的数据,可能会报错,因为android机制的原因:不能UI线程中,需要自己写个新的线程}@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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
注意 AchartEngine是一个开源插件,点击访问




更多相关文章

  1. android > WebView > 布局
  2. [Android] 环境配置之Android(安卓)Studio开发NDK
  3. virtualbox 安装android设置分辨率(自定义)
  4. [置顶] Android(安卓)百度地图 简单实现--- 美食搜索
  5. Android(安卓)ListView 几个重要属性
  6. CheckedTextView 显示问题
  7. android 录像和拍照功能
  8. Android(安卓)权限
  9. android 录像和拍照功能

随机推荐

  1. 关于android:layout_weight属性使用注意
  2. Android(安卓)异步加载图片分析
  3. 关于android:layout_weight属性使用注意
  4. Android应用程序请求SurfaceFlinger服务
  5. 共享Android开发手册
  6. android main.xml分析。。一点点补充
  7. Android(安卓)studio导入Github的项目
  8. Android事件分发
  9. 关于android:layout_weight属性使用注意
  10. Android开发5——文件读写