美文网首页
一步一步教你写股票走势图——分时图四(高亮联动)

一步一步教你写股票走势图——分时图四(高亮联动)

作者: AJiangNo1 | 来源:发表于2016-06-15 18:15 被阅读149次

    目录
    一步一步教你写股票走势图——分时图一(概述)
    一步一步教你写股票走势图——分时图二(自定义xy轴)
    一步一步教你写股票走势图——分时图三(对齐图表、自定义柱状图高亮)
    一步一步教你写股票走势图——分时图四(高亮联动)
    一步一步教你写股票走势图——分时图五(自定义标记)


    demo更新地址https://github.com/AndroidJiang/StockChart


    前一节我们学习了有关柱状图的高亮自定义,那么这一节我们来搞一搞两张图表的联动效果,先看一下我们要实现的效果。


    这里写图片描述

    我们要实现两张图表之间建立了连接,我们滚动高亮第一张图,第二张图表的高亮也会跟着动,滚动第二张图表第一张要跟着动。

    分析源码

    在Chart中,我们找到了如下一段代码:

    /**
         * Highlights the values at the given indices in the given DataSets. Provide
         * null or an empty array to undo all highlighting. This should be used to
         * programmatically highlight values. This DOES NOT generate a callback to
         * the OnChartValueSelectedListener.
         *
         * @param highs
         */
        public void highlightValues(Highlight[] highs) {
    
            // set the indices to highlight
            mIndicesToHighlight = highs;
    
            if (highs == null || highs.length <= 0 || highs[0] == null) {
                mChartTouchListener.setLastHighlighted(null);
            } else {
                mChartTouchListener.setLastHighlighted(highs[0]);
            }
    
            // redraw the chart
            invalidate();
        }
    

    这个函数大概功能就是设置图表高亮值得(如果哪位大神觉得不对了,请指正,这是小弟的见解啊,经过测试,也能实现这个功能),所以我们也就有了思路:

    表A高亮滚动时传递highlight值给表B
    表B高亮滚动式传递highlight值给表A

    那么我们怎么监听两表的高亮滚动事件呢?

    监听事件:

     public void setOnChartValueSelectedListener(OnChartValueSelectedListener l) {
            this.mSelectionListener = l;
        }
    

    OnChartValueSelectedListener 都有啥参数传递呢?

    void onValueSelected(Entry e, int dataSetIndex, Highlight h);
    

    看到Highlight是不是特别激动,反正博主已经激动的不要不要了,好像日个墙玩玩!

    写代码

    我们这就开始监听并传递数据过去:

     lineChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
                @Override
                public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
                    barChart.highlightValues(new Highlight[]{h});
                }
    
                @Override
                public void onNothingSelected() {
    
                }
            });
            barChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
                @Override
                public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
                    lineChart.highlightValues(new Highlight[]{h});
                }
    
                @Override
                public void onNothingSelected() {
    
                }
            });
    

    抱着试试看的态度测试了一下,请看效果图

    这里写图片描述

    目录
    一步一步教你写股票走势图——分时图一(概述)
    一步一步教你写股票走势图——分时图二(自定义xy轴)
    一步一步教你写股票走势图——分时图三(对齐图表、自定义柱状图高亮)
    一步一步教你写股票走势图——分时图四(高亮联动)
    一步一步教你写股票走势图——分时图五(自定义标记)


    demo更新地址https://github.com/AndroidJiang/StockChart


    相关文章

      网友评论

          本文标题:一步一步教你写股票走势图——分时图四(高亮联动)

          本文链接:https://www.haomeiwen.com/subject/skdpdttx.html