一步一步教你寫股票走勢圖——分時(shí)圖三(對齊圖表、自定義高亮)


目錄
一步一步教你寫股票走勢圖——分時(shí)圖一(概述)
一步一步教你寫股票走勢圖——分時(shí)圖二(自定義xy軸)
一步一步教你寫股票走勢圖——分時(shí)圖三(對齊圖表第岖、自定義柱狀圖高亮)
一步一步教你寫股票走勢圖——分時(shí)圖四(高亮聯(lián)動(dòng))
一步一步教你寫股票走勢圖——分時(shí)圖五(自定義標(biāo)記)


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


我們先看一下之前的效果圖:


這里寫圖片描述

圖表的兩邊明顯不對齊块差,右邊尤其明顯,左邊是因?yàn)槎紝懥俗鴺?biāo)燎潮,看起來不那么明顯喻鳄,但是還是沒有對齊的。我們再看一下高亮确封,折線圖的高亮樣式是我們想要的除呵,而柱狀圖的高亮他將整個(gè)那根柱子黑色顯示了再菊,但是卻不是我們要的那種效果,我們要的也是跟上面一樣的一根線效果颜曾,下面我們先來設(shè)計(jì)圖表的對齊纠拔。

對齊圖表

我們肯定得用到getViewPortHandler這個(gè)類,只想說一句泛豪,很牛逼的一個(gè)類稠诲,大家必須得看看里面的東西,基本上有關(guān)圖表的所有信息诡曙,你都能在它里面獲取到臀叙。

代碼:

 /*設(shè)置量表對齊*/
    private void setOffset() {
        float lineLeft = lineChart.getViewPortHandler().offsetLeft();
        float barLeft = barChart.getViewPortHandler().offsetLeft();
        float lineRight = lineChart.getViewPortHandler().offsetRight();
        float barRight = barChart.getViewPortHandler().offsetRight();
        float offsetLeft, offsetRight;
 /*注:setExtraLeft...函數(shù)是針對圖表相對位置計(jì)算,比如A表offLeftA=20dp,B表offLeftB=30dp,則A.setExtraLeftOffset(10),并不是30价卤,還有注意單位轉(zhuǎn)換*/
        if (barLeft < lineLeft) {
            offsetLeft = Utils.convertPixelsToDp(lineLeft-barLeft);
            barChart.setExtraLeftOffset(offsetLeft);
        } else {
            offsetLeft = Utils.convertPixelsToDp(barLeft-lineLeft);
            lineChart.setExtraLeftOffset(offsetLeft);
        }
  /*注:setExtra...函數(shù)是針對圖表絕對位置計(jì)算劝萤,比如A表offRightA=20dp,B表offRightB=30dp,則A.setExtraLeftOffset(30),并不是10,還有注意單位轉(zhuǎn)換*/
        if (barRight < lineRight) {
            offsetRight = Utils.convertPixelsToDp(lineRight);
            barChart.setExtraRightOffset(offsetRight);
        } else {
            offsetRight = Utils.convertPixelsToDp(barRight);
            lineChart.setExtraRightOffset(offsetRight);
        }

    }

代碼很好理解慎璧,就不做詳細(xì)說明了床嫌,具體的坑我已經(jīng)寫在注釋中,這里感謝下天才木木的指正(單位轉(zhuǎn)換)炸卑,我們直接看下效果吧既鞠。

這里寫圖片描述

圖表的對齊到此結(jié)束,下面我們介紹一下如何自定義柱狀圖的高亮盖文。


自定義柱狀圖形狀以及高亮

這部分就很簡單了嘱蛋,我們直接在源碼中修改即可。

  • 形狀

我們要實(shí)現(xiàn)如下效果:


這里寫圖片描述

首先我們找到BarChartRenderer這個(gè)類五续,定位到drawDataSet方法洒敏,然后有這么一段代碼:

c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],
                        buffer.buffer[j + 3], mRenderPaint);

這就是畫的柱狀圖,我們原生的比較粗疙驾,那么我們只要自己重畫它就ok啦凶伙!

我這邊將原來的柱狀圖寬度變成原來的1/3,

  c.drawRect(buffer.buffer[j] + (buffer.buffer[j + 2] - buffer.buffer[j]) / 3, buffer.buffer[j + 1], buffer.buffer[j + 2] - (buffer.buffer[j + 2] - buffer.buffer[j]) / 3,
                        buffer.buffer[j + 3], mRenderPaint);

看下效果(為了便于查看它碎,我改了顏色):

這里寫圖片描述
  • 高亮

同樣函荣,我們找到drawHighlighted這個(gè)方法,重寫

 /*重寫高亮*/
                    c.drawLine(mBarRect.centerX(), mViewPortHandler.getContentRect().bottom, mBarRect.centerX(), 0, mHighlightPaint);
                   // c.drawRect(mBarRect, mHighlightPaint);

上效果:


這里寫圖片描述

哦了扳肛,對齊圖表以及自定義柱狀圖這邊就結(jié)束了傻挂,下一篇將介紹下圖表高亮的聯(lián)動(dòng),demo中已經(jīng)有了挖息,有興趣的可以查看一下金拒。


目錄
一步一步教你寫股票走勢圖——分時(shí)圖一(概述)
一步一步教你寫股票走勢圖——分時(shí)圖二(自定義xy軸)
一步一步教你寫股票走勢圖——分時(shí)圖三(對齊圖表、自定義柱狀圖高亮)
一步一步教你寫股票走勢圖——分時(shí)圖四(高亮聯(lián)動(dòng))
一步一步教你寫股票走勢圖——分時(shí)圖五(自定義標(biāo)記)


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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末套腹,一起剝皮案震驚了整個(gè)濱河市绪抛,隨后出現(xiàn)的幾起案子资铡,更是在濱河造成了極大的恐慌,老刑警劉巖幢码,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笤休,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛤育,警方通過查閱死者的電腦和手機(jī)宛官,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓦糕,“玉大人底洗,你說我怎么就攤上這事」韭Γ” “怎么了亥揖?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圣勒。 經(jīng)常有香客問我费变,道長,這世上最難降的妖魔是什么圣贸? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任挚歧,我火速辦了婚禮,結(jié)果婚禮上吁峻,老公的妹妹穿的比我還像新娘滑负。我一直安慰自己,他們只是感情好用含,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布矮慕。 她就那樣靜靜地躺著,像睡著了一般啄骇。 火紅的嫁衣襯著肌膚如雪痴鳄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天缸夹,我揣著相機(jī)與錄音痪寻,去河邊找鬼。 笑死虽惭,一個(gè)胖子當(dāng)著我的面吹牛槽华,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趟妥,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佣蓉!你這毒婦竟也來了披摄?” 一聲冷哼從身側(cè)響起亲雪,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疚膊,沒想到半個(gè)月后义辕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寓盗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年灌砖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傀蚌。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡基显,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出善炫,到底是詐尸還是另有隱情撩幽,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布箩艺,位于F島的核電站窜醉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏艺谆。R本人自食惡果不足惜榨惰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望静汤。 院中可真熱鬧琅催,春花似錦、人聲如沸撒妈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狰右。三九已至杰捂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棋蚌,已是汗流浹背嫁佳。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谷暮,地道東北人蒿往。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像湿弦,于是被迫代替她去往敵國和親瓤漏。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容