zoukankan      html  css  js  c++  java
  • AChartEngine绘制图形

    AChartEngine是Android作图的方法之一,要使用AChartEngine,首先下载AChartEngine,按照以下方法将其jar包添加到工程中:

    1、将achartengine-1.1.0.jar文件复制到工程的libs文件夹下;

    2、在Eclipse中选中工程,按F5刷新;

    3、在Eclipse中选中libs文件夹下的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 {
    	
    	// 数据值
    	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};  
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
      	           DrawChart();
    	}
    
    	@Override
    	public 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;
    // 定义XYMultipleSeriesRenderer XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // 定义XYMultipleSeriesDataset XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); // 定义XYSeriesRenderer XYSeriesRenderer xyRenderer = new XYSeriesRenderer(); // 定义XYSeries XYSeries series = new XYSeries("DATA_01"); // 将数据加入series for (int i=0; i<10; i++){ x = dx[i]; y = dy[i]; series.add(x,y); } // 将series加入dataset dataset.addSeries(series); // 设置系列颜色 xyRenderer.setColor(Color.YELLOW); // 设置系列点样式 xyRenderer.setPointStyle(PointStyle.SQUARE); // 设置系列点宽度 xyRenderer.setPointStrokeWidth(10); // 设置系列点样式 xyRenderer.setLineWidth(5); // 将xyRenderer加入renderer renderer.addSeriesRenderer(xyRenderer); // 设置图表标题 renderer.setChartTitle("AChartEngine DEMO"); renderer.setChartTitleTextSize(30); // 设置图表标题X,Y轴的标题及样式 renderer.setXTitle("X VALUES"); renderer.setYTitle("Y VALUES"); renderer.setAxisTitleTextSize(30); renderer.setYLabelsPadding(20); // 设置坐标轴数值的字体 renderer.setLabelsTextSize(30); // 坐标轴的最大、最小值 renderer.setXAxisMax(10); renderer.setXAxisMin(0); renderer.setYAxisMax(10); renderer.setYAxisMin(0); // 设置图表背景颜色 renderer.setBackgroundColor(Color.BLACK); renderer.setApplyBackgroundColor(true); // 设置图表的Margins数组(1.上,2.左,3.下,4.右) int[] m = new int[]{80,80,20,20}; renderer.setMargins(m); // 是否显示图例 renderer.setShowLegend(false); // 显示网格 renderer.setShowGrid(true); // 网格颜色 renderer.setGridColor(Color.WHITE); // 绘制曲线图 Intent intent = ChartFactory.getLineChartIntent(this, dataset, renderer); startActivity(intent); } }

    由于显示的是org.achartengine.GraphicalActivity,所以在onCreate(Bundle savedInstanceState)方法中,删掉setContentView()语句,用绘图函数DrawChart()替代。

    DrawChart()首先定义了几个变量。XYMultipleSeriesRenderer是整个图形,XYSeriesRenderer是图形里面的一个系列;XYMultipleSeriesDataset是整个图形的数据集,XYSeries是图形里面一个系列的数据集。

    首先将多组成对的X值和Y值加入XYSeries,再将XYSeries加入XYMultipleSeriesDataset。然后设置XYSeriesRenderer的一些属性,再将设置好的XYSeriesRenderer加入XYMultipleSeriesRenderer。如果有多个系列,可以重复上述过程,只要保证一个XYSeries对应一个XYSeriesRenderer即可。最后设置XYMultipleSeriesRenderer的一些属性,即整个图形的属性。

    设置好以后,用ChartFactory.getLineChartIntent()函数绘制曲线图。如果绘制条形图,用getBarChartIntent(),绘制饼图用getPieChartIntent(),还有其他一些图形,就不一一例举了。

    绘制出的图形如下:

  • 相关阅读:
    注册机实现算法
    nginx优化配置服务,快速提升服务器性能,突破100000万高并发不是梦!
    语雀、有道云笔记、滴答清单一键保存文章,剪藏文章chrom、360极速浏览器火狐插件
    超简单!查询自己在CSDN、博客园、简书、知乎、51CTO等平台的百度收录情况
    最全的中文Vscode扩展插件&配置调试&快捷键&格式化方法
    中文汉化atom最美前端开发编辑器插件安装和常用配置&快捷键,5年的使用心得
    加速Github访问,最新地址仅需1步!修改host快速达到2M!
    使用标签link rel="alternate"属性,帮助搜索引擎对不同设备的用户提供不同类型的页面
    JavaScript高级程序设计学习笔记(1)
    idea中多模块项目引入
  • 原文地址:https://www.cnblogs.com/mstk/p/3556203.html
Copyright © 2011-2022 走看看