当前位置:编程学习 > wap >>

android 图表控件问题

做一个树状条形图表,x轴显示内容是月份,y轴显示的是销售量,当生成数据之后,可以点击图表中的数据条,然后弹出一个树状条形表,显示当月每日的销售量,这样的图表应该怎么做啊,一点思路都没有,求指点。。 android图表控件 --------------------编程问答-------------------- surfaceview,canvas画图做吧。系统的控件做不了 --------------------编程问答--------------------
引用 1 楼 knxw0001 的回复:
surfaceview,canvas画图做吧。系统的控件做不了

我是用这样实现的,可是实现不了点击事件。
package net.tycmc.bulb.androidstandard.sales.ui;

import java.util.ArrayList;

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

import com.example.barchart.R;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class MainActivity extends Activity {
LinearLayout li1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 得到资源
li1 = (LinearLayout) findViewById(R.id.li1);
// 初始化柱状图
initView();
}

private void initView() {
// 柱状图的序列的标题
String[] titles = new String[] { "月销售量" };
// 存放柱状图序列的值
ArrayList<double[]> value = new ArrayList<double[]>();
double[] d1 = new double[] { 10, 30, 50, 70, 90,20,40,60,80,100,15,66 };
value.add(d1);
int[] colors = { Color.BLUE};//, Color.GREEN 

// 为li1添加柱状图
li1.addView(
xychar(titles, value, colors, 12, 10, new double[] { 0,
12, 0, 100}, new int[] { 1, 2, 3, 4,
5,6,7,8,9,10,11,12 }, "2013年月销售量", true),
new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
}

public GraphicalView xychar(String[] titles, ArrayList<double[]> value,
int[] colors, int x, int y, double[] range, int[] xLable,
String xtitle, boolean f) {
// 多个渲染
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
// 多个序列的数据集
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// 构建数据集以及渲染
for (int i = 0; i < titles.length; i++) {
XYSeries series = new XYSeries(titles[i]);
double[] yLable = value.get(i);
for (int j = 0; j < yLable.length; j++) {
series.add(xLable[j], yLable[j]);
}
dataset.addSeries(series);
XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
// 设置颜色
xyRenderer.setColor(colors[i]);
// 设置点的样式 //
xyRenderer.setPointStyle(PointStyle.SQUARE);
// 将要绘制的点添加到坐标绘制中

renderer.addSeriesRenderer(xyRenderer);
}
// 设置x轴标签数
renderer.setXLabels(x);
// 设置Y轴标签数
renderer.setYLabels(y);
// 设置x轴的最大值
renderer.setXAxisMax(x);
// 设置轴的颜色
renderer.setAxesColor(Color.BLACK);
// 设置x轴和y轴的标签对齐方式
renderer.setXLabelsAlign(Align.CENTER);
renderer.setYLabelsAlign(Align.RIGHT);
// 设置现实网格
// renderer.setShowGrid(true);

renderer.setShowAxes(true);
// 设置条形图之间的距离
renderer.setBarSpacing(0.2);
renderer.setInScroll(false);
renderer.setPanEnabled(false, false);
renderer.setClickEnabled(false);
// 设置x轴和y轴标签的颜色
renderer.setXLabelsColor(Color.RED);
renderer.setYLabelsColor(0, Color.RED);

int length = renderer.getSeriesRendererCount();
// 设置图标的标题
renderer.setChartTitle(xtitle);
renderer.setLabelsColor(Color.RED);

// 设置图例的字体大小
renderer.setLegendTextSize(18);
// 设置x轴和y轴的最大最小值
renderer.setRange(range);
renderer.setMarginsColor(0x00888888);
for (int i = 0; i < length; i++) {
SimpleSeriesRenderer ssr = renderer.getSeriesRendererAt(i);
ssr.setChartValuesTextAlign(Align.RIGHT);
ssr.setChartValuesTextSize(12);
ssr.setDisplayChartValues(f);
}
GraphicalView mChartView = ChartFactory.getBarChartView(
getApplicationContext(), dataset, renderer, Type.DEFAULT);

return mChartView;

}
}
--------------------编程问答-------------------- google提供的图表引擎 AChartEngine, 你可以去看看! --------------------编程问答--------------------
引用 3 楼 u011133213 的回复:
google提供的图表引擎 AChartEngine, 你可以去看看!

我也看呢,可是看不懂怎么生成的数据,之前没接触过,特别吃力。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,