开源控件MPAndroidChart的使用:
主要是实现的一个历史电量的变化。
下面直接代码讲解:
使用的是Githup上的开源控件地址是:https://github.com/PhilJay/MPAndroidChart
mChart.setViewPortOffsets(55, 55, 55, 55); //设置视图的偏移量
如果不对视图设置偏移最左边和最右边的的标注只能显示一半。
YAxis y = mChart.getAxisLeft();
y.setEnabled(false); //设置y轴不显示
mChart.animateXY(2000, 2000); //设置动画x轴和y轴为2秒中
set1.setFillColor(Color.parseColor(“#e6e6e6”)); //设置填充的北京色
下面是全部代码:
private void initElectricity() {
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setViewPortOffsets(55, 55, 55, 55); //设置视图的偏移量
mChart.setDescription(“”);
mChart.setTouchEnabled(false);
// // enable scaling and dragging
mChart.setDragEnabled(false);
mChart.setScaleEnabled(true);
mChart.setPinchZoom(true);
mChart.setDrawGridBackground(false);
tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
XAxis x = mChart.getXAxis();
x.setDrawGridLines(false);
x.setPosition(XAxis.XAxisPosition.BOTTOM);
x.setSpaceBetweenLabels(2);
x.setTextColor(Color.WHITE);
x.setTextSize(14);
x.setEnabled(true);
YAxis y = mChart.getAxisLeft();
y.setEnabled(false);
mChart.getAxisRight().setEnabled(false);
setData(12, 100);
mChart.getLegend().setEnabled(false);
mChart.animateXY(2000, 2000);
ArrayList<LineDataSet> sets = (ArrayList<LineDataSet>) mChart.getData()
.getDataSets();
for (LineDataSet set : sets) {
if (set.isDrawFilledEnabled()) {
set.setDrawFilled(false);
set.setDrawCircles(false);
} else {
set.setDrawFilled(true);
set.setDrawCircles(true);
}
}
for (DataSet<?> set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
}
private void setData(int count, float range) {
ArrayList<String> xVals = new ArrayList<String>();
for (int i = 0; i < count; i++) {
xVals.add((i + 1) + "月");
}
ArrayList<Entry> vals1 = new ArrayList<Entry>();
vals1.add(new Entry(89, 0));
vals1.add(new Entry((float) 63.2, 1));
vals1.add(new Entry((float) 73.4, 2));
vals1.add(new Entry((float) 65, 3));
vals1.add(new Entry((float) 75, 4));
vals1.add(new Entry((float) 78.9, 5));
vals1.add(new Entry((float) 88.9, 6));
vals1.add(new Entry((float) 98.9, 7));
vals1.add(new Entry((float) 78.9, 8));
vals1.add(new Entry((float) 38.9, 9));
vals1.add(new Entry((float) 68.9, 10));
vals1.add(new Entry((float) 88.9, 11));
// create a dataset and give it a type
LineDataSet set1 = new LineDataSet(vals1, "DataSet 1");
set1.setDrawCubic(true);
set1.setCubicIntensity(0.2f);
set1.setDrawFilled(false);
set1.setDrawCircles(true);
set1.setLineWidth(0f);
set1.setCircleSize(2f);
set1.setCircleColor(Color.parseColor("#e6e6e6"));
set1.setHighLightColor(Color.rgb(244, 117, 117));
set1.setColor(Color.WHITE);
set1.setFillColor(Color.parseColor("#e6e6e6"));
// set1.setFillAlpha(100);
set1.setDrawHorizontalHighlightIndicator(true);
set1.setFillFormatter(new FillFormatter() {
@Override
public float getFillLinePosition(LineDataSet dataSet, LineDataProvider dataProvider) {
return 0;
}
});
// create a data object with the datasets
LineData data = new LineData(xVals, set1);
data.setValueTypeface(tf);
data.setValueTextSize(12f);
data.setValueTextColor(Color.WHITE);
data.setDrawValues(false);
// set data
mChart.setData(data);
}