解决方案 »

  1.   

    surfaceview,canvas画图做吧。系统的控件做不了
      

  2.   

    我是用这样实现的,可是实现不了点击事件。
    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; }
    }
      

  3.   

    google提供的图表引擎 AChartEngine, 你可以去看看!