c语言编程笔录

首页 >   > 笔记大全

笔记大全

基于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图表的交易量图表可以展示给用户,让用户更加清晰明了地了解股票的走势和变化情况。

```