AChartEngine是一个安卓系统上制作图表的框架,关于它的介绍大家可以百度,也可以参考下面这篇博客,里面的介绍相对比较详细,我这里不过多赘述。

使用:

1.首先我们要下载一个AChartEngine的jar包

 

下载地址:http://code.google.com/p/achartengine/downloads/list

或者去我的百度网盘下载:http://pan.baidu.com/s/1eQWEBcA

2.在你需要的工程导入jar包,先解压

在你的工程上右键,选择properties

android button 原型背景 渐变_android

android button 原型背景 渐变_xml_02

导入完成后可以在自己的Referenced Libraries里看到,如果这里面没有就在libs下面,如果两个都没有说明没有导入成功

android button 原型背景 渐变_xml_03

3.在Androidmanifest.xml文件中进行配置文件

<activity android:name="org.achartengine.GraphicalActivity" />

4.代码部分

先创建一个接口,用于获取一个当前类型图标的Intent实例 ,便于跳转



package com.example.myrixin;

import android.content.Context;
import android.content.Intent;

public interface AChartAbstract {

    /** 
     * 获取一个当前类型图标的Intent实例 
     */  
    public Intent getIntent(Context context);
}



 然后再自己的主函数里面继承接口实现其方法,并初始化数据,构造数据,构造渲染器,具体代码如下:(大家的主函数应该是MainActivity)



package com.example.myrixin;

import org.achartengine.ChartFactory;
import org.achartengine.chart.BarChart;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.widget.Button;

public class xxxx extends Activity implements AChartAbstract {
    
    public BarChart chart;
    public Button btn;  
	
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.xxxx);
        
        //折线图
        Intent lineIntent = getIntent(xxxx.this);
        xxxx.this.startActivity(lineIntent);
        
	}     
    
    //实现接口的方法
	   public Intent getIntent(Context context) {  
	        Intent mIntent=ChartFactory.getBarChartIntent(context, getDataSet(), getRenderer(), Type.STACKED, "当月开票金额树状图");  
	        return mIntent;  
	    }
	
	   /** 
	     * 构造数据 
	     * @return 
	     */  
	    public XYMultipleSeriesDataset getDataSet() {  
	        // 构造数据  
	        XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();  
	        CategorySeries barSeries = new CategorySeries("2016年3月");  
	        barSeries.add(865.5969);  
	        barSeries.add(2492.6479);  
	        barSeries.add(891.0137);  
	        barSeries.add(0.0);  
	        barSeries.add(691.0568);  
	        barDataset.addSeries(barSeries.toXYSeries());  
	        return barDataset;  
	    }  
	  
	    /** 
	     * 构造渲染器 
	     * @return 
	     */  
	    public XYMultipleSeriesRenderer getRenderer() {  
	        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();  
	        renderer.setXTitle("事业部");  
	        renderer.setYTitle("单位(万元)");  
	        renderer.setAxesColor(Color.WHITE);  
	        renderer.setLabelsColor(Color.WHITE);  
	        // 设置X轴的最小数字和最大数字  
	        renderer.setXAxisMin(0.5);  
	        renderer.setXAxisMax(5.5);  
	        // 设置Y轴的最小数字和最大数字  
	        renderer.setYAxisMin(0);  
	        renderer.setYAxisMax(3000);  
	        renderer.addXTextLabel(1, "电网");  
	        renderer.addXTextLabel(2, "通信");  
	        renderer.addXTextLabel(3, "宽带");  
	        renderer.addXTextLabel(4, "专网");  
	        renderer.addXTextLabel(5, "轨交");  
	        renderer.setZoomButtonsVisible(true);  
	        // 设置渲染器允许放大缩小  
	        renderer.setZoomEnabled(true);  
	        // 消除锯齿  
	        renderer.setAntialiasing(true);  
	        // 设置背景颜色  
	        renderer.setApplyBackgroundColor(true);  
	        renderer.setBackgroundColor(Color.GRAY);  
	        // 设置每条柱子的颜色  
	        SimpleSeriesRenderer sr = new SimpleSeriesRenderer();  
	        sr.setColor(Color.YELLOW);  
	        renderer.addSeriesRenderer(sr);  
	        // 设置每个柱子上是否显示数值  
	        renderer.getSeriesRendererAt(0).setDisplayChartValues(true);  
	        // X轴的近似坐标数  (这样不显示横坐标)  
	        renderer.setXLabels(0);  
	        // Y轴的近似坐标数  
	        renderer.setYLabels(6);  
	        // 刻度线与X轴坐标文字左侧对齐  
	        renderer.setXLabelsAlign(Align.LEFT);  
	        // Y轴与Y轴坐标文字左对齐  
	        renderer.setYLabelsAlign(Align.LEFT);  
	        // 允许左右拖动,但不允许上下拖动.  
	        renderer.setPanEnabled(true, false);  
	        // 柱子间宽度  
	        renderer.setBarSpacing(0.5f);  
	        // 设置X,Y轴单位的字体大小  
	        renderer.setAxisTitleTextSize(20);  
	        return renderer;  
	    }  

}



 

运行的结果如下:

android button 原型背景 渐变_android_04

更多图表的例子可以在http://code.google.com/p/achartengine/中下载demo


做到这里,我相信很多又开始了新的烦恼,因为这个图标页面是一个单独的布局文件,而且还被加密的我们无法看见。那我们怎样才能把图标显示在自己的界面,这里需要用到view进行页面的重新布局,由上面的基础,不多说直接代码AndroidManifest中的代码与上面一样,

顺便设置下顶部标题栏的actionbar

这里的     

<activity android:name="com.example.myrixin.xxxx"
            android:label="留给地图的"
            android:theme="@android:style/Theme.Holo"></activity>

主题要选择Holo或者其子类,运行的最低版本有要求改一下就可以了

android button 原型背景 渐变_android_05

1.布局文件xxxx.xml



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    
 <LinearLayout
        android:id="@+id/chart_show"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        />


</LinearLayout>



2.menu.xml文件



<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/user_p"
        android:icon="@drawable/yh"
        android:showAsAction="always"
        android:title="用户"/>
    <item
        android:id="@+id/write_p"
        android:icon="@drawable/fb"
        android:showAsAction="always"
        android:title="发布"/>
    <item
        android:id="@+id/favo_p"
        android:icon="@drawable/sc"
        android:showAsAction="never"
        android:title="收藏"/>

</menu>



3.主函数



package com.example.myrixin;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;

import android.app.ActionBar;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class xxxx extends Activity implements AChartAbstract {

	public BarChart chart;
	public Button btn;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.xxxx);
		//actionBar
		ActionBar actionBar = getActionBar();
         //类似返回箭头的东东  
		actionBar.setDisplayHomeAsUpEnabled(true); 

		// 折线图
//		Intent lineIntent = getIntent(xxxx.this);
//		xxxx.this.startActivity(lineIntent);
		//实例化组件
		LinearLayout linearView=(LinearLayout)findViewById(R.id.chart_show);
         //调用方法,得到view
		GraphicalView chartView=getChartGraphicalView(this);
          //加入组件
		linearView.addView(chartView,
	                new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
	}

	public GraphicalView getChartGraphicalView(Context context) {
		return ChartFactory.getBarChartView(context, getDataSet(),
				getRenderer(), Type.STACKED);
	}

	//actionbar
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.layout.menu, menu);
		return super.onCreateOptionsMenu(menu);
	}

	//当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
        case android.R.id.home:  
            finish();
            return true; 
		case R.id.user_p:
			Toast.makeText(this, "你点击了“用户”按键!", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.write_p:
			Toast.makeText(this, "你点击了“发布”按键!", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.favo_p:
			Toast.makeText(this, "你点击了“收藏”按键!", Toast.LENGTH_SHORT).show();
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}

	// 实现接口的方法
	public Intent getIntent(Context context) {
		Intent mIntent = ChartFactory.getBarChartIntent(context, getDataSet(),
				getRenderer(), Type.STACKED, "一张图而已");
		return mIntent;
	}

	/**
	 * 构造数据
	 * 
	 * @return
	 */
	public XYMultipleSeriesDataset getDataSet() {
		// 构造数据
		XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();
		CategorySeries barSeries = new CategorySeries("2016年3月");
		barSeries.add(865.5969);
		barSeries.add(2492.6479);
		barSeries.add(891.0137);
		barSeries.add(0.0);
		barSeries.add(691.0568);
		barDataset.addSeries(barSeries.toXYSeries());
		return barDataset;
	}

	/**
	 * 构造渲染器
	 * 
	 * @return
	 */
	public XYMultipleSeriesRenderer getRenderer() {
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
		renderer.setXTitle("事业部");
		renderer.setYTitle("单位(万元)");
		renderer.setAxesColor(Color.WHITE);
		renderer.setLabelsColor(Color.WHITE);
		// 设置X轴的最小数字和最大数字
		renderer.setXAxisMin(0.5);
		renderer.setXAxisMax(5.5);
		// 设置Y轴的最小数字和最大数字
		renderer.setYAxisMin(0);
		renderer.setYAxisMax(3000);
		renderer.addXTextLabel(1, "电网");
		renderer.addXTextLabel(2, "通信");
		renderer.addXTextLabel(3, "宽带");
		renderer.addXTextLabel(4, "专网");
		renderer.addXTextLabel(5, "轨交");
		renderer.setZoomButtonsVisible(true);
		// 设置渲染器允许放大缩小
		renderer.setZoomEnabled(true);
		// 消除锯齿
		renderer.setAntialiasing(true);
		// 设置背景颜色
		renderer.setApplyBackgroundColor(true);
		renderer.setBackgroundColor(Color.GRAY);
		// 设置每条柱子的颜色
		SimpleSeriesRenderer sr = new SimpleSeriesRenderer();
		sr.setColor(Color.YELLOW);
		renderer.addSeriesRenderer(sr);
		// 设置每个柱子上是否显示数值
		renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
		// X轴的近似坐标数 (这样不显示横坐标)
		renderer.setXLabels(0);
		// Y轴的近似坐标数
		renderer.setYLabels(6);
		// 刻度线与X轴坐标文字左侧对齐
		renderer.setXLabelsAlign(Align.LEFT);
		// Y轴与Y轴坐标文字左对齐
		renderer.setYLabelsAlign(Align.LEFT);
		// 允许左右拖动,但不允许上下拖动.
		renderer.setPanEnabled(true, false);
		// 柱子间宽度
		renderer.setBarSpacing(0.5f);
		// 设置X,Y轴单位的字体大小
		renderer.setAxisTitleTextSize(20);
		return renderer;
	}

}



 运行结果:

android button 原型背景 渐变_xml_06