目录
使用MPAndroidChart实现K线图(1)——基本用法
使用MPAndroidChart实现K线图(2)——自定义XY轴
使用MPAndroidChart实现K线图(3)——自定义柱状图
使用MPAndroidChart实现K线图(4)——图表联动、加载更多
使用MPAndroidChart实现K线图(5)——高亮联动、横竖屏切换
最近的项目用到了K线图,研究了几天MPAndroidChart,终于实现了预定的效果。在这里把详细的过程和感悟分享给大家。
最终效果主要参考DragonEx的K线图(GIF不会做,这里放静态图了):
主要包含功能:K线成交量联动、滑到边缘加载更多、长按高亮、横竖屏切换等。
上图的图表分为两部分:上部分是包含蜡烛图、折线图的组合图(CombinedChart),下部分是成交量的柱状图(BarChart)。先使用MPAndroidChart画出这两个图。
引入MPAndroidChart:(https://github.com/PhilJay/MPAndroidChart)
修改项目级build.gradle
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
}
app级build.gradle中的dependencies添加:
compile 'com.github.PhilJay:MPAndroidChart:v3.0.3'
核心代码
初始化图表
private CombinedChart cc;
private BarChart bc;
private Map<Integer, String> xValues;
private LineDataSet lineSet5;
private LineDataSet lineSet10;
private CandleDataSet candleSet;
private CombinedData combinedData;
private BarDataSet barSet;
private DecimalFormat format4p = new DecimalFormat("0.0000");//格式化数字,保留小数点后4位
private void initChart() {
int black = getColorById(R.color.black3B);
int gray = getColorById(R.color.gray8B);
int red = getColorById(R.color.redEB);
int green = getColorById(R.color.green4C);
int highlightColor = getColorById(R.color.brown);
float highlightWidth = 0.5F;//高亮线的线宽
//K线
cc.setNoDataTextColor(gray);//无数据时提示文字的颜色
cc.setDescription(null);//取消描述
cc.getLegend().setEnabled(false);//取消图例
cc.setDragDecel