效果如图
代码如下
MainActivity.java
mLineChart = (LineChart) findViewById(R.id.lineChart);
//动画
mLineChart.animateX(1000);
//获得左下角图例
Legend legend = mLineChart.getLegend();
//控制图例不被显示
legend.setEnabled(false);
//获取X轴
XAxis xAxis = mLineChart.getXAxis();
//X轴边框虚线化
xAxis.enableGridDashedLine(10f, 10f, 0f);
//设置X轴的文字在底部
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//获取左端Y轴,Y轴有两条,最左端和左右端分别有一条
YAxis leftAxis = mLineChart.getAxisLeft();
//Y轴边框虚线画
leftAxis.enableGridDashedLine(10f, 10f, 0f);
//获取右端Y轴
YAxis rightAxis = mLineChart.getAxisRight();
//Y轴边框虚线画
rightAxis.enableGridDashedLine(10f, 10f, 0f);
//去掉坐标轴右边的Y线
rightAxis.setDrawAxisLine(false);
//去掉坐标轴右边Y线上的文字
rightAxis.setDrawLabels(false);
//设置描述文字
mLineChart.setDescription("");
//模拟一个x轴的数据 12/1 12/2 ... 12/7
List<String> xValues = new ArrayList<>();
for (int i = 1; i < 8; i++) {
xValues.add("12/" + i);
}
Log.e("wing", xValues.size() + "");
//模拟y轴数据(存放y轴数据的是一个Entry的ArrayList) 他是构建LineDataSet的参数之一
ArrayList<Entry> yValue1 = new ArrayList<>();
yValue1.add(new Entry(7, 0));
yValue1.add(new Entry(17, 1));
yValue1.add(new Entry(3, 2));
yValue1.add(new Entry(5, 3));
yValue1.add(new Entry(4, 4));
yValue1.add(new Entry(3, 5));
yValue1.add(new Entry(7, 6));
//构建一个LineDataSet 代表一组Y轴数据 (比如不同的彩票: 七星彩 双色球)
LineDataSet dataSet = new LineDataSet(yValue1, "");
//去掉坐标上的原点,默认是true
dataSet.setDrawCircles(false);
//构建一个类型为LineDataSet的ArrayList 用来存放所有 y的LineDataSet 他是构建最终加入LineChart数据集所需要的参数
List<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
//将数据加入dataSets
dataSets.add(dataSet);
//构建一个LineData 将dataSets放入
LineData lineData = new LineData(xValues,dataSets);
lineData.setDrawValues(false);
//将数据插入
mLineChart.setData(lineData);
//自定义view,用来显示被选中的高亮值
CustomMarkerView mv = new CustomMarkerView(mLineChart,MainActivity.this,R.layout.mpchart_marker_view);
mLineChart.setMarkerView(mv);
自定义view
CustomMarkerView
public class CustomMarkerView extends MarkerView{
private TextView tvContent;
LineChart mLineChart;
public CustomMarkerView (LineChart lineChart,Context context,int layoutResource) {
super(context, layoutResource);
tvContent = (TextView) findViewById(R.id.tvContent);
mLineChart = lineChart;
}
@Override
public void refreshContent(Entry e, Highlight highlight) {
tvContent.setText("净值:" + e.getVal() + "时间:" + mLineChart.getData().getXVals().get(e.getXIndex()));
Log.i("testChart", "e.getVal111-->" + tvContent.getText() );
}
@Override
public int getXOffset(float xpos) {
return -(getWidth() / 2);
}
@Override
public int getYOffset(float ypos) {
return -getHeight();
}
}
自定义view对应的样式
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="40dp">
<TextView
android:id="@+id/tvContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="7dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:text=""
android:textSize="20sp"
android:textColor="@android:color/black"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>