hellochart的使用
这里给大家介绍HelloChart图形绘制框架的使用。
Android studio直接依赖
compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
不能依赖的需要自己下在包导入点击下载
helloChart框架功能和效果都是比较多的:
介绍下里面存中的图形和相关的Activity
1.LineChartActivity 折线图形
2.ColumnChartActivity 柱状图形
3.PieChartActivity 饼状图形
4.BubbleChartActivity 泡泡图形
5.PreviewLineChartActivity 局部缩放的折线图形
6.PreviewColumnChartActivity 局部缩放的柱状图形
7.ComboLineColumnChartActivity 柱状图和折线图结合的图形
8.LineColumnDependencyActivity 点击柱状图某个柱子显示对应的折线的图形
9.SpeedChartActivity 速度图形
10.TempoChartActivity 节奏图形
11.GoodBadChartActivity 好和坏情况显示图形
12.ViewPagerChartsActivity 多种图形结合ViewPager显示
下面是折线图的一个例子:
MainActivity
public class MainActivity extends AppCompatActivity {
LineChartView lineChartView;// 显示线条的自定义View
private LineChartData data; // 折线图封装的数据类
private int numberOfLines = 1; // 线条的数量
private int maxNumberOfLines = 2; // 最大的线条数据
private int numberOfPoints = 12; // 点的数量
float[][] randomNumbersTab = new float[maxNumberOfLines][numberOfPoints]; // 二维数组,线的数量和点的数量
private boolean hasAxes = true; // 是否有轴,x和y轴
private boolean hasAxesNames = true; // 是否有轴的名字
private boolean hasLines = true; // 是否有线(点和点连接的线)
private boolean hasPoints = true; // 是否有点(每个值的点)
private ValueShape shape = ValueShape.CIRCLE; // 点显示的形式,圆形,正方向,菱形
private boolean isFilled = false; // 是否是填充
private boolean hasLabels = false; // 每个点是否有名字
private boolean isCubic = false; // 是否是立方的,线条是直线还是弧线
private boolean hasLabelForSelected = false; // 每个点是否可以选择(点击效果)
private boolean pointsHaveDifferentColor; // 线条的颜色变换
private boolean hasGradientToTransparent = false; // 是否有梯度的透明
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineChartView = (LineChartView) findViewById(R.id.llcv);
initData();
initEvent();
//initdata();
}
private void initData() {
generateValues(); // 设置四条线的值数据
generateData(); // 设置数据
lineChartView.setViewportCalculationEnabled(false);
lineChartView.setZoomType(ZoomType.HORIZONTAL);// 设置线条可以水平方向收缩
resetViewport(); // 设置折线图的显示大小
}
private void initEvent() {
lineChartView.setOnValueTouchListener(new ValueTouchListener());
}
/**
* 设置四条线条的数据
*/
private void generateValues() {
for (int i = 0; i < maxNumberOfLines; i++) {
for (int j = 0; j < numberOfPoints; j++) {
randomNumbersTab[i][j] = (float) Math.random() * 100f;
}
}
}
private void resetViewport() {
// Reset viewport height range to (0,100)
final Viewport v = new Viewport(lineChartView.getMaximumViewport());
v.bottom = 0;
v.top = 100;
v.left = 0;
v.right = numberOfPoints - 1;
lineChartView.setMaximumViewport(v);
lineChartView.setCurrentViewport(v);
}
/**
* 配置数据
*/
private void generateData() {
List<Line> lines = new ArrayList<Line>();
for (int i = 0; i < numberOfLines; ++i) {
List<PointValue> values = new ArrayList<PointValue>();
for (int j = 0; j < numberOfPoints; ++j) {
values.add(new PointValue(j, randomNumbersTab[i][j]));
}
Line line = new Line(values);
line.setColor(ChartUtils.COLORS[i]);
line.setShape(shape);// 点的形状
line.setCubic(isCubic);// 直线 弧线
line.setFilled(isFilled);// 是否填充
line.setHasLabels(hasLabels);// 每个点是否有名字
line.setHasLabelsOnlyForSelected(hasLabelForSelected);// 是否有点击效果
line.setHasLines(hasLines);// 是否有线点与点之间
line.setHasPoints(hasPoints);// 是否有点 每个值
// line.setHasGradientToTransparent(hasGradientToTransparent);// 是否有梯度的透明
if (pointsHaveDifferentColor) {
line.setPointColor(ChartUtils.COLORS[(i + 1)
% ChartUtils.COLORS.length]);
}
lines.add(line);
}
data = new LineChartData(lines);
if (hasAxes) {
Axis axisX = new Axis();
Axis axisY = new Axis().setHasLines(true);
if (hasAxesNames) {
axisX.setTextColor(Color.BLACK);
axisY.setTextColor(Color.BLACK);
axisX.setName("Axis X");
axisY.setName("Axis Y");
}
data.setAxisXBottom(axisX);
data.setAxisYLeft(axisY);
} else {
data.setAxisXBottom(null);
data.setAxisYLeft(null);
}
data.setBaseValue(Float.NEGATIVE_INFINITY);
lineChartView.setLineChartData(data);
}
/**
* 触摸监听类
*/
private class ValueTouchListener implements LineChartOnValueSelectListener {
@Override
public void onValueSelected(int lineIndex, int pointIndex,
PointValue value) {
Toast.makeText(getBaseContext(), "Selected: " + value, Toast.LENGTH_SHORT).show();
}
@Override
public void onValueDeselected() {
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.lineatest.MainActivity">
<lecho.lib.hellocharts.view.LineChartView
android:id="@+id/llcv"
android:layout_width="match_parent"
android:layout_height="500dp" />
</LinearLayout>