Android 柱状图 统计图的实现

来源:互联网 发布:万网现在买域名送xyz 编辑:程序博客网 时间:2024/05/29 11:11

效果图如下:

这里写图片描述

实现步骤:

布局和jar包相关借鉴此文章

核心代码:

public class MounthOrderActivity extends BaseActivity {    private LinearLayout rootView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_mounth_order);        rootView = (LinearLayout) findViewById(R.id.rootView);        // 点击导航栏的返回按钮的点击事件        Button back = (Button) findViewById(R.id.more_nav_bar_left_btn);        back.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        initData();    }    /**     *      * @Description: 填充数据     * @Author: gyz     * @Since: 2017-1-3上午11:24:26     */    private void initData() {        ArrayList<ChartBean> list = new ArrayList<ChartBean>();        list.add(new ChartBean("德国悬液美学洗车", 168, "#04FE7C"));        list.add(new ChartBean("除沥青", 68, "#8BBA00"));        list.add(new ChartBean("真皮唤醒镀膜", 99, "#FF8E46"));        list.add(new ChartBean("洗轮毂", 88, "#AFD8F8"));        list.add(new ChartBean("日耳曼座舱革命", 99, "#03A9F4"));        rootView.removeAllViews();        rootView.addView(getBarGraphView(this, list));    }    private GraphicalView getBarGraphView(Context context, List<ChartBean> data) {        int color = Color.parseColor("#4DBA7A");        XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();        XYSeries series = new XYSeries("本月订单统计");        for (int i = 0; i < data.size(); i++) {            series.add(i + 1, data.get(i).value);        }        mDataset.addSeries(series);        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();//      mRenderer.setXTitle("\n\n\n\n服务条目");// 设置为X轴的标题//      mRenderer.setYTitle("数量");// 设置y轴的标题//      mRenderer.setAxisTitleTextSize(getResources().getDimension(R.dimen.tSize14));// 设置xy轴标题文本大小        mRenderer.setLabelsTextSize(getResources().getDimension(R.dimen.tSize8));// 设置标签的文字大小        mRenderer.setLegendTextSize(getResources().getDimension(R.dimen.tSize14));// 设置图例文本大小        mRenderer.setPointSize(10f);// 设置点的大小        mRenderer.setYAxisMin(0);// 设置y轴最小值是0        double maxValue = getMaxValue(data);        mRenderer.setYAxisMax(11 * maxValue / 10);        mRenderer.setXAxisMin(0);        mRenderer.setXAxisMax(data.size() + 1);        mRenderer.setShowGrid(true);// 显示网格        mRenderer.setBarSpacing(0.5);        mRenderer.setPanEnabled(false, false);// 设置x方向可以滑动,y方向不可以滑动        mRenderer.setZoomEnabled(false, false);// 设置x,y方向都不可以放大或缩小        for (int i = 0; i < data.size(); i++) {            mRenderer.addXTextLabel(i + 1, data.get(i).label);        }        mRenderer.setXLabels(0);// 设置只显示如1月,2月等替换后的东西,不显示1,2,3等        mRenderer.setMargins(new int[] { 20, 50, 50, 20 });// 设置视图位置 上 左 下 右        // 设置颜色        mRenderer.setXLabelsColor(color);        mRenderer.setYLabelsColor(0, color);        mRenderer.setMarginsColor(Color.WHITE);        mRenderer.setLabelsColor(color);        // 折线        XYSeriesRenderer r = new XYSeriesRenderer();        r.setColor(color);// 设置颜色        r.setPointStyle(PointStyle.CIRCLE);// 设置点的样式        r.setFillPoints(true);// 填充点(显示的点是空心还是实心)        r.setDisplayChartValues(true);// 将点的值显示出来        r.setChartValuesSpacing(10);// 显示的点的值与图的距离        r.setChartValuesTextSize(getResources().getDimension(R.dimen.tSize14));// 点的值的文字大小        r.setLineWidth(3);// 设置线宽        mRenderer.addSeriesRenderer(r);        GraphicalView view = ChartFactory.getBarChartView(context, mDataset, mRenderer, Type.DEFAULT);        return view;    }    private double getMaxValue(List<ChartBean> data) {        int max = Integer.MIN_VALUE;        for (int i = 0; i < data.size(); i++) {            if (data.get(i).value > max) {                max = data.get(i).value;            }        }        return max;    }}
1 0
原创粉丝点击