package com.bell.testhellocharts;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import java.util.ArrayList;
import java.util.List;
import lecho.lib.hellocharts.gesture.ContainerScrollType;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.view.LineChartView;
public class MainActivity extends AppCompatActivity {
private Context mContext;
private List<TimeData> mTimeDatas;
//x轴标注名称集合
List<AxisValue> mAxisXValues = new ArrayList<>();
//点集合
List<PointValue> pointValues = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
FrameLayout frameLayout = new FrameLayout(mContext);
setContentView(frameLayout);
mTimeDatas = initData();
//处理X轴
for(int i = 0; i<mTimeDatas.size(); i++){
AxisValue axisValue = new AxisValue(i);
axisValue.setLabel(i+"点");
mAxisXValues.add(i, axisValue);
}
//处理点
for (int i = 0; i<mTimeDatas.size(); i++){
PointValue pointValue = new PointValue(i, Float.parseFloat(mTimeDatas.get(i).getMoney()));
pointValue.setLabel(mTimeDatas.get(i).getMoney()+"");
pointValues.add(i, pointValue);
}
Line line = new Line();
line.setValues(pointValues);
// 把点的集合放在线上,显示多条线 就用不同的line分别添加不同的values
line.setValues(pointValues);
// 线的颜色
line.setColor(Color.RED);
// 点的颜色
line.setPointColor(Color.RED);
// 形状,ValueShape提供了几个
line.setShape(ValueShape.CIRCLE);
// 线的透明度
// chartline.setAreaTransparency(0);
// 点的大小
line.setPointRadius(5);
// 点上的标注信息,刚才 pointValues里面每个点的标注
line.setCubic(false);
// 阴影面积
line.setFilled(false);
// 是否用线显示。如果为false 则没有曲线只有点显示
line.setHasLines(true);
// 是否用点显示。如果为false 则没有点
line.setHasPoints(true);
// 点的标注是否显示
line.setHasLabels(true);
// 线的粗细
line.setStrokeWidth(2);
// 显示几条线,就可以分别设置每一条线,然后add进来
List<Line> lines= new ArrayList<>();
lines.add(line);
// 线的集合放在chart数据中,
LineChartData data = new LineChartData();
//点的描述文字设置
data.setValueLabelBackgroundColor(Color.TRANSPARENT);
data.setValueLabelsTextColor(Color.BLACK);
data.setValueLabelBackgroundEnabled(false);
//画线
data.setLines(lines);
//坐标配置
Axis axisX = new Axis();
axisX.setValues(mAxisXValues).setHasSeparationLine(false).setTextColor(Color.BLACK);
Axis axisY = new Axis().setHasLines(false).setName("Y轴");
data.setAxisXBottom(axisX);
// data.setAxisYLeft(axisY);
data.setBaseValue(Float.NEGATIVE_INFINITY);
LineChartView lineChartView = new LineChartView(mContext);
lineChartView.setBackgroundColor(Color.WHITE);
lineChartView.setLineChartData(data);
// 设置行为属性,支持缩放、滑动以及平移,设置他就可以自己设置动作了
lineChartView.setInteractive(true);
//可缩放
lineChartView.setZoomEnabled(true);
lineChartView.setZoomType(ZoomType.HORIZONTAL);
//横向滚动
lineChartView.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
//设置默认的显示的X轴数据量
/*Viewport v = new Viewport(lineChartView.getMaximumViewport());
// v.top = 50;
// v.bottom = 50;
// lineChartView.setMaximumViewport(v);
v.left = -1;
v.right = 5;
lineChartView.setCurrentViewport(v);*/
lineChartView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 800));
frameLayout.addView(lineChartView);
}
List<TimeData> initData(){
List<TimeData> datas = new ArrayList<>();
datas.add(new TimeData("2017-11-16 00:00", "1300"));
datas.add(new TimeData("2017-11-16 01:00", "1340"));
datas.add(new TimeData("2017-11-16 02:00", "3230"));
datas.add(new TimeData("2017-11-16 03:00", "0"));
datas.add(new TimeData("2017-11-16 04:00", "1000"));
datas.add(new TimeData("2017-11-16 05:00", "6050"));
datas.add(new TimeData("2017-11-16 06:00", "0"));
datas.add(new TimeData("2017-11-16 07:00", "3400"));
datas.add(new TimeData("2017-11-16 08:00", "12400"));
datas.add(new TimeData("2017-11-16 09:00", "2000"));
datas.add(new TimeData("2017-11-16 10:00", "5000"));
datas.add(new TimeData("2017-11-16 11:00", "3000"));
datas.add(new TimeData("2017-11-16 12:00", "1000"));
datas.add(new TimeData("2017-11-16 13:00", "4000"));
datas.add(new TimeData("2017-11-16 14:00", "9000"));
datas.add(new TimeData("2017-11-16 15:00", "11020"));
datas.add(new TimeData("2017-11-16 16:00", "3400"));
datas.add(new TimeData("2017-11-16 17:00", "7000"));
datas.add(new TimeData("2017-11-16 18:00", "0"));
datas.add(new TimeData("2017-11-16 19:00", "0"));
datas.add(new TimeData("2017-11-16 20:00", "2000"));
datas.add(new TimeData("2017-11-16 21:00", "4000"));
datas.add(new TimeData("2017-11-16 22:00", "0"));
datas.add(new TimeData("2017-11-16 23:00", "3000"));
return datas;
}
}