AndroidMPChart股票圖-分時(shí)圖01 - 簡書
AndroidMPChart股票圖-分時(shí)圖02 - 簡書
AndroidMPChart是一款android圖表庫令蛉,它支持線性圖蕴纳,柱子圖消略,蠟燭圖和扇形圖
前段時(shí)間項(xiàng)目用到了AndroidMPChart來畫股票圖守谓,遇到了一些問題分享下。
分時(shí)圖:
我們在畫分時(shí)圖要和市面上的分時(shí)圖很類似钓株,而原始的mp框架無法滿足我們的需求实牡,則需要修改源碼了。
我們看下下面這個(gè)分時(shí)圖來怎么實(shí)現(xiàn)
我們分析下這個(gè)圖怎么用mp來畫
1.外層有個(gè)邊框這個(gè)mp支持的不需要我們再去修改
2.有三條橫向的虛線享幽,mp里也是支持的叫做警戒線(這個(gè)類LimitLine)
? 2》LimitLine這個(gè)類它是畫警戒線的
如果我們要在LeftY添加警戒線則是這樣的
//第二個(gè)參數(shù)設(shè)置描述則就會顯示在左側(cè)的值
LimitLine limitLineMax=new LimitLine("警戒線值",“警戒線描述”);
//是否設(shè)置虛線顯示
limitLineMax.enableDashedLine(“線的長度”, “間隔”, “偏移量”);
//警戒線右側(cè)顯示值
第一步:我們在LimitLine類中定義這個(gè)變量并實(shí)現(xiàn)set/get方法
第二步:在YAxisRenderer類中的renderLimitLines這個(gè)方法里添加
第三步:還是在這個(gè)方法內(nèi)找到畫標(biāo)簽的方法里添加畫右標(biāo)簽
注意這里需要判斷警戒線的位置我用的LEFT_TOP铲掐,LEFT_BOTTOM左上和左下
設(shè)置完成就OK啦,我們回到警戒線里
//設(shè)置右邊標(biāo)簽值
limitLineMax.setmRightLabel(“右邊標(biāo)簽值”);
//設(shè)置標(biāo)簽顯示在警戒線下方
limitLineMax.setLabelPosition(LimitLine.LimitLabelPosition.LEFT_BOTTOM);
//添加警戒線值桩,3條虛線一樣的添加
axisLeft.addLimitLine(limitLine);
3.畫x軸的標(biāo)簽
原始mp的x軸標(biāo)簽都會超過最左邊和最右邊邊距摆霉,要實(shí)現(xiàn)上面的那種效果我們需要設(shè)置
xAxis.setAvoidFirstLastClipping(true);
設(shè)置這個(gè)方法之后最右邊的還是有問題我們需要修改源碼
4.畫線的陰影填充背景漸變
在Drawable中定義一個(gè)漸變色的xml
set.setFillDrawable("獲取你定義的xml");
//開啟填充
set.setDrawFilled(true);
5.我們在畫分手圖的時(shí)候會有動態(tài)畫分時(shí)圖的需求,就是當(dāng)數(shù)據(jù)推送一個(gè)點(diǎn)的時(shí)候畫一個(gè)點(diǎn),而不是清空圖表從9點(diǎn)30從新畫携栋。我們知道股票圖一分鐘畫一個(gè)點(diǎn)(共242個(gè)點(diǎn))而一分鐘之內(nèi)則會推送好幾個(gè)點(diǎn)而取的是這個(gè)分鐘的最后一個(gè)點(diǎn)搭盾。我們要的效果就是在這一分鐘中推送過來的上下波動到這一分鐘完了再去畫這個(gè)點(diǎn)
//實(shí)現(xiàn)在一分鐘之內(nèi)上下波動
1.先獲取chartData,
2.然后再根據(jù)chartdata獲取相應(yīng)的dataset(每一個(gè)set代表一條線)
3.獲取當(dāng)前set的最后一個(gè)點(diǎn)索引
4.根據(jù)當(dāng)前set的最后一個(gè)索引獲取Entry
5.設(shè)置Y值
entryForIndex.setY(“推送的Y值”)
6.通知圖表刷新數(shù)據(jù)
//動態(tài)添加數(shù)據(jù)
1婉支,2鸯隅,3,跟實(shí)現(xiàn)在一分鐘之內(nèi)上下波動一樣
4.添加到最后一個(gè)索引里
dataSetByIndex.addEntry(indexLast向挖,“添加到值”)
5.刷新數(shù)據(jù)并將圖表移動到指定位置
mLineChart.moveViewTo(indexLast,"值"蝌以,YAxis.AxisDependency.LEFT)
到這里就可以畫出上面的圖了及動態(tài)添加分時(shí)圖,下篇文章我說說怎么畫高亮線何之。
有問題麻煩提出交流共同學(xué)習(xí)跟畅。