Android图表第三方库enginechart的使用小结

最近公司的金融类项目要求使用到多折线图、环饼图和柱状图,本来想自定义,但是一想到自己还不会自定义控件,所以还是找找第三方资源吧,哈哈。

在网络上搜索了相关的关键字,发现当前的主流图表非谷歌的enginechart莫属。不废话,下面来简单地介绍下这个第三方库的概念和基本使用方法,和本人在使用时的流程,如有

不足欢迎大家吐槽。

enginechart的来源:据说是谷歌的,没有深悉

enginechart可以绘制哪些图表:圆饼图、圆环图、一般折线图、圆滑折线图、圆柱图、立方图、气泡图等等。

本文针对Eclipse开发环境在activity上绘制,多折线图,圆环图,圆饼图,柱形图。


1、下载enginechart.jar

2、导入enginechart.jar到libs下

3、直接应用,这里说明下,调用enginechart画图时,需要传入两个主要参数,renderer 和dataset。

renderer可以理解为视图控制层,用来设置图表的标题,XY轴的单元格大小,XY值字体大小,颜色设置等

dataset可以理解为数据层,主要用来添加图表中所用到的数据,添加坐标点。

圆环图代码:

private void initView() {
FrameLayout flFrameLayout = (FrameLayout) findViewById(R.id.fl);


String[] titleStrings = { "微信", "支付宝", "银行" };
double[] values = { 60.0, 40.0, 30.0 };
MultipleCategorySeries categorySeries = BaseEngineChart.getInstance()
.getMultipleCategorySeries("环饼图", titleStrings, values);
categorySeries.add(titleStrings, values);


int[] colors = new int[] { Color.BLUE, Color.YELLOW, Color.GREEN };
DefaultRenderer renderer = BaseEngineChart.getInstance()
.getDefaultRenderer(colors);
// 显示表格标签
renderer.setShowLabels(true);
// 显示底部说明
renderer.setShowLegend(true);
// 白色背景
renderer.setBackgroundColor(Color.WHITE);
// 黑色的xy轴lable
renderer.setLabelsColor(Color.BLACK);
// 设置lable字体大小
renderer.setLabelsTextSize(15 * 1f);
// 是否可以放大缩小
renderer.setZoomEnabled(true);
// 放大镜按钮是否可见
renderer.setZoomButtonsVisible(false);
// 是否允许拖动
renderer.setPanEnabled(false);
// 底部说明的字体大小
renderer.setLegendTextSize(20 * 1f);
//
renderer.setChartTitle("环饼图");
//
renderer.setChartTitleTextSize(40 * 1f);


renderer.setApplyBackgroundColor(true);

mGraphicalView = ChartFactory.getDoughnutChartView(this,
categorySeries, renderer);


flFrameLayout.removeAllViews();
flFrameLayout.addView(mGraphicalView);
}

公共类代码:

public class BaseEngineChart {
public static BaseEngineChart mBaseEngineChart;
private int scaleName=0;
public static BaseEngineChart getInstance() {
if (mBaseEngineChart == null) {
mBaseEngineChart = new BaseEngineChart();
}
return mBaseEngineChart;
}


/**
* 数据获取

* @param titles
* @param valuesList
* @return
*/
public XYMultipleSeriesDataset getDataset(String[] titles,
List<double[]> valuesList) {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
for (int i = 0; i < titles.length; i++) {
CategorySeries series = new CategorySeries(titles[i]);
double[] ds = valuesList.get(i);
for (int j = 0; j < ds.length; j++) {
series.add(ds[j]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
/**
* 折线图    数据获取
* @param titles
* @param x
* @param y
* @return
*/
public XYMultipleSeriesDataset getXYMultipleSeriesDataset(String[] titles,List<double []> x, 
List<double []> y){
XYMultipleSeriesDataset xyDataset = new XYMultipleSeriesDataset();

for (int i = 0; i < titles.length; i++) {

XYSeries mXySeries = new XYSeries(titles[i], scaleName);
System.out.println("i:"+i +"length:"+titles.length);
System.out.println("x:"+x.size());

double[] xValues = x.get(i);
double[] yValues = y.get(i);

int xPoints = xValues.length;
for (int j = 0; j < xPoints; j++) {
mXySeries.add(xValues[j], yValues[j]);
}
xyDataset.addSeries(mXySeries);
}
return xyDataset;

}
/**
* XYMultipleSeriesRenderer 的构建

* @param colors
* @return
*/
public XYMultipleSeriesRenderer getXYMultipleSeriesRenderer(int[] colors,PointStyle[] styles) {


XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

//设置实心点
int length = renderer.getSeriesRendererCount();
for (int i = 0; i <length ; i++) {
((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
//设置点样式
for (int i = 0; i < colors.length; i++) {
XYSeriesRenderer xySeriesRenderer = new XYSeriesRenderer();
xySeriesRenderer.setColor(colors[i]);
xySeriesRenderer.setPointStyle(styles[i]);
renderer.addSeriesRenderer(xySeriesRenderer);
}
return renderer;

}
/**
* XYMultipleSeriesRenderer 的构建

* @param colors
* @return
*/
public XYMultipleSeriesRenderer getXYMultipleSeriesRenderer(int[] colors) {


XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
//设置颜色
for (int i = 0; i < length; i++) {
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}

return renderer;

}
/**
* chart 相关属性设置
* @param renderer
* @param title
* @param xTitle
* @param yTitle
* @param xMin
* @param xMax
* @param yMin
* @param yMax
* @param axesColor
* @param labelsColor
*/
public void setChartSettings(XYMultipleSeriesRenderer renderer,
String title, String xTitle, String yTitle, double xMin,
double xMax, double yMin, double yMax, int axesColor,
int labelsColor) {
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setXAxisMax(xMax);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
}
/**
* DefaultRenderer 获取
* @param colors
* @return
*/
public DefaultRenderer getDefaultRenderer(int[] colors){
DefaultRenderer renderer = new DefaultRenderer();
for (int color : colors) {
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
seriesRenderer.setColor(color);
renderer.addSeriesRenderer(seriesRenderer);
}
return renderer;
}
/**
* 环饼图  参数设置
* @param renderer
* @param title
* @param axesColor
* @param labelsColor
*/
protected void setChartSetting(DefaultRenderer renderer,
String title, int axesColor,
int labelsColor){
renderer.setChartTitle(title);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);

/**
* CategorySeries 的构建
* @param title
* @return
*/
public CategorySeries getCategorySeries(String title){
CategorySeries mCategorySeries = new CategorySeries(title);

return mCategorySeries;
}
/**
* 获取 MultipleCategorySeries
* @param title
* @param titleStrings
* @param values
* @return
*/
@SuppressWarnings("unused")
public MultipleCategorySeries getMultipleCategorySeries(String title,
String[] titleStrings, double[] values){
MultipleCategorySeries mMultipleCategorySeries = new MultipleCategorySeries(title);

return mMultipleCategorySeries;
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值