AndroidMPChart股票圖-K線圖02

我們接著上篇,來說下k線的分頁加載更多和高亮線的相關

圖表的相關滑動都在OnChartGestureListener這個接口里惭蹂,
我們定義一個類去實現它的方法
這個接口總共有8個方法
onChartGestureStart ——>字面意思就是開始
onChartGestureEnd ——>結束
onChartLongPressed ——>長按事件
onChartDoubleTapped——>雙擊事件
onChartSingleTapped——>單擊事件
onChartFling——>手指滑動事件
onChartScale——>縮放事件
onChartTranslate——移動事件

我們實現上下兩個圖表聯(lián)動也是在這個類里來實現的

     private Chart srcChart;
     private Chart[] dstCharts;
    //這個方法就是實現上下圖表聯(lián)動的--->方法來自網絡
 void syncCharts() {
    Matrix srcMatrix;
    float[] srcVals = new float[9];
    Matrix dstMatrix;
    float[] dstVals = new float[9];
    // get src chart translation matrix:
    srcMatrix = srcChart.getViewPortHandler().getMatrixTouch();
    srcMatrix.getValues(srcVals);

    // apply X axis scaling and position to dst charts:
    for (Chart dstChart : dstCharts) {
        if (dstChart.getVisibility() == View.VISIBLE) {
            dstMatrix = dstChart.getViewPortHandler().getMatrixTouch();
            dstMatrix.getValues(dstVals);

            dstVals[Matrix.MSCALE_X] = srcVals[Matrix.MSCALE_X];
            dstVals[Matrix.MSKEW_X] = srcVals[Matrix.MSKEW_X];
            dstVals[Matrix.MTRANS_X] = srcVals[Matrix.MTRANS_X];
            dstVals[Matrix.MSKEW_Y] = srcVals[Matrix.MSKEW_Y];
            dstVals[Matrix.MSCALE_Y] = srcVals[Matrix.MSCALE_Y];
            dstVals[Matrix.MTRANS_Y] = srcVals[Matrix.MTRANS_Y];
            dstVals[Matrix.MPERSP_0] = srcVals[Matrix.MPERSP_0];
            dstVals[Matrix.MPERSP_1] = srcVals[Matrix.MPERSP_1];
            dstVals[Matrix.MPERSP_2] = srcVals[Matrix.MPERSP_2];

            dstMatrix.setValues(dstVals);
            dstChart.getViewPortHandler().refresh(dstMatrix, dstChart, true);
        }
    }
}

我們滑動要分頁加載歷史k線數據該怎么解決呢
1.定義一個接口LoadMoreListener 加載更多接口

public interface LoadMoreListener {
    void onLoadMore();
  }

2.定義一個標記是否加載更多

    private boolean canloadMore = false;

3.我們在onChartGestureStart設置canloadMore為false
4.在onChartGestureEnd中我們判斷是否該加載更多

if (canloadMore && srcChart instanceof CombinedChart && loadmore != null) {
    //這個是我自身需求獲取最小可見
        float lowestVisibleX = ((CombinedChart) srcChart).getLowestVisibleX();
        float highestVisibleX = ((CombinedChart) srcChart).getHighestVisibleX();
        if (xVisibleminAndMax != null) {
            xVisibleminAndMax.xVisiblemin((int) lowestVisibleX);
            xVisibleminAndMax.xVisiblemax((int) highestVisibleX);
        }
  //主要這個方法
        loadmore.onLoadMore();
    }

5.我們在滑動中事件onChartTranslate設置

if (!canloadMore && srcChart instanceof CombinedChart && loadmore != null) {
        float lowestVisibleX = ((CombinedChart) srcChart).getLowestVisibleX();
        float highestVisibleX = ((CombinedChart) srcChart).getHighestVisibleX();
        if (xVisibleminAndMax != null) {
            xVisibleminAndMax.xVisiblemin((int) lowestVisibleX);
            xVisibleminAndMax.xVisiblemax((int) highestVisibleX);
        }
    //向右滑動
        if (dX > 0) {
          //滑動的可見最小值小于50就去加載數據
            if (lowestVisibleX < 50) {
                canloadMore = true;
            }
        }
    }

6.在Activity中實現這個接口加載更多就行。

我們在滑動高亮線改變標記
1.高亮線的事件在OnChartValueSelectedListener

   @Override
    public void onValueSelected(Entry e, Highlight h) {
      //這里就是改變上面MA5割粮,MA10剿干,MA20的值
        selectVaules(e, h);
        stock_CombinedBarChar.highlightValues(new Highlight[]{h});
        //當高亮線顯示的時候取消圖表拖動功能
        mCombinedChart.setDragEnabled(false);
        stock_CombinedBarChar.setDragEnabled(false);
        mCombinedChart.setHighlightPerDragEnabled(true);
        stock_CombinedBarChar.setHighlightPerDragEnabled(true);
    }

    @Override
    public void onNothingSelected() {
        fragmentToActivity.onNothingSelected();
        stock_CombinedBarChar.highlightValues(null);
        //當高亮線消失的時候開啟圖表拖動功能
        mCombinedChart.setDragEnabled(true);
        stock_CombinedBarChar.setDragEnabled(true);
        mCombinedChart.setHighlightPerDragEnabled(false);
        stock_CombinedBarChar.setHighlightPerDragEnabled(false);
    }

我們第一次打開k線的時候是將數據移動到最右側的
1.定一個標記,表示第一次

        //將數據移動到最右側
        mCombinedChart.moveViewToX(kLinePointses.size() - 1);
        stock_CombinedBarChar.moveViewToX(kLinePointses.size() - 1);

2.定義最多顯示的條目

   //最多顯示60組數據
    mCombinedChart.setVisibleXRangeMaximum(60);
    // 最少顯示30組數據
    mCombinedChart.setVisibleXRangeMinimum(30);
    stock_CombinedBarChar.setVisibleXRangeMaximum(60);
    stock_CombinedBarChar.setVisibleXRangeMinimum(30);
    //自動伸縮
    mCombinedChart.setAutoScaleMinMaxEnabled(true);
    stock_CombinedBarChar.setAutoScaleMinMaxEnabled(true);

3.就剩下將數據添加到圖表啦穆刻。

有問題請?zhí)岢鲋x謝

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末置尔,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子氢伟,更是在濱河造成了極大的恐慌榜轿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朵锣,死亡現場離奇詭異谬盐,居然都是意外死亡,警方通過查閱死者的電腦和手機诚些,發(fā)現死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門飞傀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诬烹,你說我怎么就攤上這事砸烦。” “怎么了绞吁?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵幢痘,是天一觀的道長。 經常有香客問我家破,道長颜说,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任汰聋,我火速辦了婚禮门粪,結果婚禮上,老公的妹妹穿的比我還像新娘烹困。我一直安慰自己玄妈,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著措近,像睡著了一般溶弟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞭郑,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天辜御,我揣著相機與錄音,去河邊找鬼屈张。 笑死擒权,一個胖子當著我的面吹牛,可吹牛的內容都是我干的阁谆。 我是一名探鬼主播碳抄,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼场绿!你這毒婦竟也來了剖效?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤焰盗,失蹤者是張志新(化名)和其女友劉穎璧尸,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體熬拒,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡爷光,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了澎粟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛀序。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖活烙,靈堂內的尸體忽然破棺而出徐裸,到底是詐尸還是另有隱情,我是刑警寧澤瓣颅,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布倦逐,位于F島的核電站,受9級特大地震影響宫补,放射性物質發(fā)生泄漏。R本人自食惡果不足惜曾我,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一粉怕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抒巢,春花似錦贫贝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崇堵。三九已至,卻和暖如春客燕,著一層夾襖步出監(jiān)牢的瞬間鸳劳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工也搓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赏廓,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓傍妒,卻偏偏與公主長得像幔摸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颤练,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,099評論 25 707
  • 昨晚速涂了一幅既忆,晚上光線不好感覺把臉涂黑了,今早起來一看還行稍稍調整了一下嗦玖,還是發(fā)現了很多問題患雇,就這樣吧,再...
    伊人淡畫閱讀 266評論 4 6
  • 今日練習有理數的綜合運用 作業(yè)練習 昨日作業(yè)答案 今日作業(yè)
    BloodMage閱讀 224評論 0 0
  • 人生踏揣,如夢似的短淺庆亡,遇到誰,認識誰捞稿,懂得誰又谋,不是一朝一夕就可以透徹的。 有這么一個前挺后倔姐們兒娱局,剛跟人家上過床被...
    云粉恁苓姬閱讀 252評論 0 2