基于RecyclerChart的KLine怎么绘制Volume
更新时间:2023-07-15第一段:RecyclerChart简介
RecyclerChart是android开发中的一种图形库,适用于绘制各种图表,是一种高效的图表绘制工具。其主要利用RecyclerView + View进行实现,更加便捷灵活,主要适用于对于数据刷新率较高或者数据更新较快的场景中。
implementation 'com.github.lihangleo2:RecyclerChartView:8.4.9'
第二段:KLine图表结构
KLine图表是股票交易市场中最常见的一种图表,它主要用于展示股票交易的走势和变化情况。K线图包含很多个蜡烛,每个蜡烛对应收盘价、开盘价、最高价和最低价等指标。为了更加直观的了解K线的走势变化,通常还需要绘制成交量图表,以直观呈现交易市场的整体情况。因此,与KLine图表相对应的Volume图表也是K线图表中不可或缺的一部分。
implementation 'com.github.dtrouillet66:MPAndroidChart:v3.0.3'
第三段:KLine图表绘制步骤
接下来我来介绍一下在基于RecyclerChart的KLine图表中如何绘制交易量图表:
1.在RecyclerChart中创建View,这里我们创建一个KLineView和VolumeView,并将两者加入一个LinearLayout布局中:
private LinearLayout mContainer; private KLineView mKLineView; private VolumeView mVolumeView; mKLineView = new KLineView(context); mVolumeView = new VolumeView(context); mContainer.addView(mKLineView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 3f)); mContainer.addView(mVolumeView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
2.在KLineView的onDraw区域里绘制蜡烛形态图:
// K线图绘制line private void drawLine(Canvas canvas) { ... // 绘制高亮的时间和价格 if (mSelectedIndex != -1) { float highlightLeft = mSelectedIndex * mCandleWidth; float highlightRight = highlightLeft + mCandleWidth; canvas.drawRect(highlightLeft, mMaxPriceY, highlightRight, mMaxPriceY - mHighlightTextHeight - mHighlightTextOffsetY, mHighlightBgPaint); canvas.drawText(mCandleEntries.get(mSelectedIndex).getTime(), highlightLeft + mHighlightTextMargin, mMaxPriceY - mHighlightTextOffsetY, mHighlightTimePaint); canvas.drawText(mCandleEntries.get(mSelectedIndex).getClosePrice(), highlightLeft + mHighlightTextMargin, mMaxPriceY - mHighlightTextHeight - mHighlightTextOffsetY + mHighlightPriceTextMargin + mHighlightPriceTextHeight, mHighlightPricePaint); } }
3.在VolumeView的onDraw区域里绘制成交量:
// 画成交量 @Override protected void draw(Canvas canvas) { ... for (int i = mStartIndex; i < mStopIndex; i++) { float volumeHeight = (float) (mVolumeEntries.get(i).getVolume() / mMaxVolume * mVolumeChartHeight); float volumeBottom = mVolumeChartBottom; float volumeTop = volumeBottom - volumeHeight; float left = getChartX(i); float right = left + mCandleWidth; canvas.drawRect(left, volumeTop, right, volumeBottom, mVolumePaint); } ... }
第四段:总结
综上所述,在基于RecyclerChart的KLine图表中绘制交易量图表,需要创建KLineView和VolumeView,然后在两者的onDraw区域里分别绘制K线和成交量,其中需要绘制蜡烛形态图和成交量柱形图。通过上述步骤完成绘制后,KLine图表的交易量图表可以展示给用户,让用户更加清晰明了地了解股票的走势和变化情况。
返回结果为: ```html第一段:RecyclerChart简介
RecyclerChart是android开发中的一种图形库,适用于绘制各种图表,是一种高效的图表绘制工具。其主要利用RecyclerView + View进行实现,更加便捷灵活,主要适用于对于数据刷新率较高或者数据更新较快的场景中。
implementation 'com.github.lihangleo2:RecyclerChartView:8.4.9'
第二段:KLine图表结构
KLine图表是股票交易市场中最常见的一种图表,它主要用于展示股票交易的走势和变化情况。K线图包含很多个蜡烛,每个蜡烛对应收盘价、开盘价、最高价和最低价等指标。为了更加直观的了解K线的走势变化,通常还需要绘制成交量图表,以直观呈现交易市场的整体情况。因此,与KLine图表相对应的Volume图表也是K线图表中不可或缺的一部分。
implementation 'com.github.dtrouillet66:MPAndroidChart:v3.0.3'
第三段:KLine图表绘制步骤
接下来我来介绍一下在基于RecyclerChart的KLine图表中如何绘制交易量图表:
1.在RecyclerChart中创建View,这里我们创建一个KLineView和VolumeView,并将两者加入一个LinearLayout布局中:
private LinearLayout mContainer; private KLineView mKLineView; private VolumeView mVolumeView; mKLineView = new KLineView(context); mVolumeView = new VolumeView(context); mContainer.addView(mKLineView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 3f)); mContainer.addView(mVolumeView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
2.在KLineView的onDraw区域里绘制蜡烛形态图:
// K线图绘制line private void drawLine(Canvas canvas) { ... // 绘制高亮的时间和价格 if (mSelectedIndex != -1) { float highlightLeft = mSelectedIndex * mCandleWidth; float highlightRight = highlightLeft + mCandleWidth; canvas.drawRect(highlightLeft, mMaxPriceY, highlightRight, mMaxPriceY - mHighlightTextHeight - mHighlightTextOffsetY, mHighlightBgPaint); canvas.drawText(mCandleEntries.get(mSelectedIndex).getTime(), highlightLeft + mHighlightTextMargin, mMaxPriceY - mHighlightTextOffsetY, mHighlightTimePaint); canvas.drawText(mCandleEntries.get(mSelectedIndex).getClosePrice(), highlightLeft + mHighlightTextMargin, mMaxPriceY - mHighlightTextHeight - mHighlightTextOffsetY + mHighlightPriceTextMargin + mHighlightPriceTextHeight, mHighlightPricePaint); } }
3.在VolumeView的onDraw区域里绘制成交量:
// 画成交量 @Override protected void draw(Canvas canvas) { ... for (int i = mStartIndex; i < mStopIndex; i++) { float volumeHeight = (float) (mVolumeEntries.get(i).getVolume() / mMaxVolume * mVolumeChartHeight); float volumeBottom = mVolumeChartBottom; float volumeTop = volumeBottom - volumeHeight; float left = getChartX(i); float right = left + mCandleWidth; canvas.drawRect(left, volumeTop, right, volumeBottom, mVolumePaint); } ... }
第四段:总结
综上所述,在基于RecyclerChart的KLine图表中绘制交易量图表,需要创建KLineView和VolumeView,然后在两者的onDraw区域里分别绘制K线和成交量,其中需要绘制蜡烛形态图和成交量柱形图。通过上述步骤完成绘制后,KLine图表的交易量图表可以展示给用户,让用户更加清晰明了地了解股票的走势和变化情况。
```