前言:
最近在技术群里面,总是有人在问这个股票图怎么做,有没有相关的三方库可以使用呢?其实我也想研究这类的项目,刚好在github上面遇到了一个制作K线图的库,叫做ikvStockChart,于是写了一个Demo,还是写这篇博客跟大家仔细讲一下把。虽然官方文档也有,但不是很清晰。于是我整理了这篇博客,让大家一看就明白使用的正确姿势。

OK,Show me your code!Go!Go!Go!
先来看一波效果图:

效果图

一、新版本功能介绍(当前最新版本:0.1.5)

ikvStockChart一个简单的Android图表库,支持时间线,k线,macd,kdj,rsi,boll索引和交互式手势操作,包括左右滑动刷新,缩放,突出显示。

1. 支持在 XML 布局文件和代码中设置各个线条颜色、大小配置
2. 支持左滑、右滑加载
3. 支持长按高亮、短按点击、双指缩放事件
4. 支持 fling 滑动
5. 支持 MACD、RSI、KDJ、BOLL 四个指标
6. 支持自定义的指标显示方式

ikvStockChart这个库附带的sample有:默认左滑右滑加载、禁用左滑右滑加载、多个指标共同联动显示、在 Fragment 中使用、带有下拉刷新的需求中使用、横竖屏切换(自动旋转)、简单分时图

二、基本使用

1. 添加依赖
compile 'com.wordplat:ikvStockChart:0.1.5'
2. 布局里面设置
<com.wordplat.ikvstockchart.InteractiveKLineLayout
    android:id="@+id/kLineLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
3. 代码里面使用

比如:

final EntrySet entrySet = new EntrySet();
entrySet.addEntry(new Entry(...));
    
kLineLayout.getKLineView().setEntrySet(entrySet);
kLineLayout.getKLineView().notifyDataSetChanged();
kLineLayout.getKLineView().setKLineHandler(new KLineHandler() {
    @Override
    public void onLeftRefresh() {
        kLineLayout.getKLineView().refreshComplete();
    }

    @Override
    public void onRightRefresh() {
        kLineLayout.getKLineView().refreshComplete();
    }

    @Override
    public void onSingleTap(MotionEvent e, float x, float y) {
    }

    @Override
    public void onDoubleTap(MotionEvent e, float x, float y) {
    }

    @Override
    public void onHighlight(Entry entry, int entryIndex, float x, float y) {
    }

    @Override
    public void onCancelHighlight() {
    }
});
4. 设置各个线条颜色大小

比如:

SizeColor sizeColor = kLineLayout.getKLineView().getRender().getSizeColor();
sizeColor.setXXX();
5. ikvStockChart 支持 66 个属性配置,具体如下:
  • 1.与轴、网格有关的属性和方法
xml布局Java代码描述从哪个版本起使用该属性
app:xLabelSizesetXLabelSizeX 轴标签字符大小0.1.0
app:xLabelColorsetXLabelColorX 轴标签字符颜色0.1.0
app:xLabelViewHeightsetXLabelViewHeightX 轴 Label 区域的高度0.1.0
app:yLabelSizesetYLabelSizeY 轴标签字符大小0.1.0
app:yLabelColorsetYLabelColorY 轴标签字符颜色0.1.0
app:yLabelAlignsetYLabelAlignY 轴标签对齐方向 1: left, 2: right0.1.2
app:axisSizesetAxisSize轴线条大小0.1.0
app:axisColorsetAxisColor轴线条颜色0.1.0
app:gridSizesetGridSize网格线大小0.1.0
app:gridColorsetGridColor网格线颜色0.1.0
  • 2.与高亮、MarkerView 有关的属性和方法
xml布局Java代码描述从哪个版本起使用该属性
app:highlightSizesetHighlightSize高亮线条大小0.1.0
app:highlightColorsetHighlightColor高亮线条颜色0.1.0
app:markerBorderSizesetMarkerBorderSizeMarkerView 边框大小0.1.0
app:markerBorderColorsetMarkerBorderColorMarkerView 边框颜色0.1.0
app:markerTextSizesetMarkerTextSizeMarkerView 字符大小0.1.0
app:markerTextColorsetMarkerTextColorMarkerView 字符颜色0.1.0
app:xMarkerAlignsetXMarkerAlignX 轴 MarkerView 对齐方向0.1.3
app:yMarkerAlignsetYMarkerAlignY 轴 MarkerView 对齐方向0.1.3
  • 3.与分时图有关的属性和方法
xml布局Java代码描述从哪个版本起使用该属性
app:timeLineSizesetTimeLineSize分时线大小0.1.0
app:timeLineColorsetTimeLineColor分时线颜色0.1.0
app:timeLineMaxCountsetTimeLineMaxCount分时图 entry 最多个数。注:此值与 entrySet 里的 entries.size() 意义不同,这里指 X 轴上最多能容纳多少个 entry0.1.4
  • 4.与蜡烛图有关的属性和方法
xml布局Java代码描述从哪个版本起使用该属性
app:candleBorderSizesetCandleBorderSize蜡烛图矩形边框大小0.1.0
app:candleExtremumLabelSizesetCandleExtremumLabelSize蜡烛图极值字符大小0.1.0
app:candleExtremumLableColorsetCandleExtremumLableColor蜡烛图极值字符颜色0.1.0
app:shadowSizesetShadowSize影线大小0.1.0
app:increasingColorsetIncreasingColor上涨颜色0.1.0
app:decreasingColorsetDecreasingColor下跌颜色0.1.0
app:neutralColorsetNeutralColor不涨不跌颜色0.1.0
app:portraitDefaultVisibleCountsetPortraitDefaultVisibleCount竖屏默认显示多少个蜡烛图0.1.0
app:zoomInTimessetZoomInTimes最多放大次数0.1.0
app:zoomOutTimessetZoomOutTimes最多缩小次数0.1.0
app:increasingStylesetIncreasingStyle上涨蜡烛图填充样式。默认实心0.1.4
app:decreasingStylesetDecreasingStyle下跌蜡烛图填充样式,默认实心0.1.4
  • 5.与股票指标有关的属性和方法
xml布局Java代码描述从哪个版本起使用该属性
app:maLineSizesetMaLineSizeMA 平均线大小0.1.0
app:ma5ColorsetMa5ColorMA5 平均线颜色0.1.0
app:ma10ColorsetMa10ColorMA10 平均线颜色0.1.0
app:ma20ColorsetMa20ColorMA20 平均线颜色0.1.0
app:bollLineSizesetBollLineSizeBOLL 线条大小0.1.0
app:bollMidLineColorsetBollMidLineColorBOLL MID 线条颜色0.1.0
app:bollUpperLineColorsetBollUpperLineColorBOLL UPPER 线条颜色0.1.0
app:bollLowerLineColorsetBollLowerLineColorBOLL LOWER 线条颜色0.1.0
app:kdjLineSizesetKdjLineSizeKDJ 线条大小0.1.0
app:kdjKLineColorsetKdjKLineColorKDJ K 线条颜色0.1.0
app:kdjDLineColorsetKdjDLineColorKDJ D 线条颜色0.1.0
app:kdjJLineColorsetKdjJLineColorKDJ J 线条颜色0.1.0
app:macdLineSizesetMacdLineSizeMACD 两条线大小0.1.0
app:macdHighlightTextColorsetMacdHighlightTextColor高亮的 MACD 字符颜色0.1.0
app:deaLineColorsetDeaLineColorDEA 线条颜色0.1.0
app:diffLineColorsetDiffLineColorDIFF 线条颜色0.1.0
app:rsiLineSizesetRsiLineSizeRSI 线条大小0.1.0
app:rsi1LineColorsetRsi1LineColorRSI 第一条线颜色0.1.0
app:rsi2LineColorsetRsi2LineColorRSI 第二条线颜色0.1.0
app:rsi3LineColorsetRsi3LineColorRSI 第三条线颜色0.1.0
app:maTextSizesetMaTextSizeMA 字符大小0.1.0
app:maTextColorsetMaTextColorMA 字符颜色0.1.0
app:bollTextSizesetBollTextSizeBOLL 字符大小0.1.0
app:bollTextColorsetBollTextColorBOLL 字符颜色0.1.0
app:kdjTextSizesetKdjTextSize KDJ字符大小0.1.0
app:kdjTextColorsetKdjTextColorKDJ 字符颜色0.1.0
app:macdTextSizesetMacdTextSizeMACD 字符大小0.1.0
app:macdTextColorsetMacdTextColorMACD 字符颜色0.1.0
app:rsiTextSizesetRsiTextSize RSI字符大小0.1.0
app:rsiTextColorsetRsiTextColorRSI 字符颜色0.1.0
  • 6.其它
xml布局Java代码描述从哪个版本起使用该属性
app:loadingTextSizesetLoadingTextSizeloading 字符大小0.1.0
app:loadingTextColorsetLoadingTextColorloading 字符颜色0.1.0
app:loadingTextsetLoadingTextloading 字符0.1.0
app:errorTextSizesetErrorTextSizeerror 字符大小0.1.0
app:errorTextColorsetErrorTextColorerror 字符颜色0.1.0
app:errorTextsetErrorTexterror 字符0.1.0
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐