Android 实用hellocharts实现柱状图、线状图

1:Android Studio添加依赖

在app的build gradle中添加依赖

compile 'com.github.lecho:hellocharts-library:1.5.8@aar'

2:布局中

我这里是用的柱状图,线状图是linechartview

<lecho.lib.hellocharts.view.ColumnChartView
    android:id="@+id/chart"
    android:layout_width="match_parent"
    android:layout_height="240dp"
    android:paddingTop="24dp"/>

3:代码中

@BindView(R.id.chart)
ColumnChartView mChartView;

public final static String[] xValues = new String[]{"", "第1月", "第2月", "第3月", "第4月"};
private int month;
private SubcolumnValue subcolumnValue;

...

@Override
protected void initView(View view) {
    super.initView(view);

    initChartViews();

}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void initChartViews() {
    List<Column> columnList = new ArrayList<>(); //柱子列表
    List<SubcolumnValue> subcolumnValueList;     //子柱列表(即一个柱子,因为一个柱子可分为多个子柱)
    List<AxisValue> axisValues = new ArrayList<>();
    for (int i = 1; i <= xValues.length-1; i++) {
        subcolumnValueList = new ArrayList<>();
        //获取数据处理
        if (i == 1 || i == 0) {
            subcolumnValue = new SubcolumnValue();
            subcolumnValue.setValue(5.8f);
            if (i <= month) {
                subcolumnValue.setColor(getResources().getColor(R.color.oval_red));
            } else {
                subcolumnValue.setColor(getResources().getColor(R.color.charts_color));
            }
            subcolumnValueList.add(subcolumnValue);
        }
        if (i == 2) {
            subcolumnValue = new SubcolumnValue();
            subcolumnValue.setValue(6.0f);
            if (i <= month) {
                subcolumnValue.setColor(getResources().getColor(R.color.oval_red));

            } else {
                subcolumnValue.setColor(getResources().getColor(R.color.charts_color));
            }
            subcolumnValueList.add(subcolumnValue);
        }
        if (i >= 3) {
            subcolumnValue = new SubcolumnValue();
            subcolumnValue.setValue(7.0f);
            if (i <= month) {
                subcolumnValue.setColor(getResources().getColor(R.color.oval_red));
            } else {
                subcolumnValue.setColor(getResources().getColor(R.color.charts_color));
            }
            subcolumnValueList.add(subcolumnValue);
        }


        Column column = new Column(subcolumnValueList);
        columnList.add(column);
        //是否有数据标注
        column.setHasLabels(true);//☆☆☆☆☆设置列标签
        //是否是点击圆柱才显示数据标注
        column.setHasLabelsOnlyForSelected(true);
        //TODO 这一步是能让圆柱标注数据显示带小数的重要一步
        ColumnChartValueFormatter chartValueFormatter = new SimpleColumnChartValueFormatter(1);
        column.setFormatter(chartValueFormatter);
        //给x轴坐标设置描述
        axisValues.add(new AxisValue(i - 1).setLabel(xValues[i]));
    }


    //图形数据加载
    ColumnChartData columnChartData = new ColumnChartData(columnList);
    mChartView.setZoomEnabled(false);//手势缩放
    mChartView.setInteractive(true);//设置图表是可以交互的(拖拽,缩放等效果的前提)
    mChartView.setZoomType(ZoomType.HORIZONTAL);//设置缩放方向

    Axis axisX = new Axis(axisValues);//x轴
    Axis axisY = new Axis();//y轴
    //是否显示网格线
    axisY.setHasLines(true);
    axisY.hasLines();
    axisX.setTextSize(12);

    //        axisX.setName("时间/月");
    //        axisY.setName(getResources().getString(R.string.expect_income_tariff));

    axisX.setTextColor(getResources().getColor(R.color.black_333));
    axisY.setTextColor(getResources().getColor(R.color.black_333));
    //设置倾斜显示在柱子内部
    //        axisX.setInside(true);
    //        axisX.setHasTiltedLabels(true);

    columnChartData.setFillRatio(0.5F);//参数即为柱子宽度的倍数,范围只能在0到1之间
    //设置显示的数据背景、字体颜色
    columnChartData.setValueLabelsTextColor(getResources().getColor(R.color.black_333));// 设置数据文字颜色
    columnChartData.setValueLabelBackgroundEnabled(false);
    columnChartData.setAxisXBottom(axisX);
    columnChartData.setAxisYLeft(axisY);
    //把数据放到控件中
    mChartView.setColumnChartData(columnChartData);

    //设置竖线
    Viewport v = new Viewport(mChartView.getMaximumViewport());
    v.top = 7.2f;
    v.bottom = 5.4f;
    mChartView.setMaximumViewport(v);
    v.left = -0.5f;
    v.right = 6;
    mChartView.setCurrentViewport(v);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个小狼娃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值