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

1:Android Studio添加依赖

在app的build gradle中添加依赖

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

2:布局中

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

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 columnList = new ArrayList<>(); //柱子列表List subcolumnValueList;     //子柱列表(即一个柱子,因为一个柱子可分为多个子柱)List 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);
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部