最近更新|軟件分類|單機(jī)游戲|軟件專題|手機(jī)版|軟件發(fā)布 安卓系統(tǒng)怎么做股票行情K線圖?android股票行情K線圖制作教程
首頁>編程開發(fā)>安卓系統(tǒng)怎么做股票行情K線圖?android股票行情K線圖制作教程

安卓系統(tǒng)怎么做股票行情K線圖?android股票行情K線圖制作教程

我要評(píng)論2016/01/09 10:22:57來源:9553編輯:

安卓系統(tǒng)怎么做股票行情K線圖?需要做股票行情app的,就來看下文教程學(xué)習(xí)android股票行情K線圖的制作方法吧。

安卓系統(tǒng)怎么做股票行情K線圖?android股票行情K線圖制作教程

背景圖是利用canvas先畫出一個(gè)矩形,然后再畫幾根虛線,均線圖是通過path來繪制的,總之圖的繪制是很簡單的,我就不在這里作介紹了,大家可以去github下載源碼看看。涉及到均線、最高價(jià)、最低價(jià)、收盤價(jià)、開盤價(jià)的概念大家可以百度一下。

計(jì)算問題

可以看到分時(shí)圖、日K、月K的左邊的成交價(jià)格都是不一樣的,而我們的k線都是通過這個(gè)價(jià)格來繪制的,也就是說價(jià)格是時(shí)刻變動(dòng),那么我們的k線繪制也是變動(dòng)的。假設(shè)我們要計(jì)算分時(shí)圖中價(jià)格為25.69的那一分鐘應(yīng)該如何畫,畫在屏幕中的哪一個(gè)位置,那么這個(gè)應(yīng)該怎么畫呢,價(jià)格是變動(dòng)的,畫的位置也是變動(dòng)的,但是有一點(diǎn)我們屏幕的大小是不變的。所以我們可以通過背景圖的高度來計(jì)算某個(gè)價(jià)格的線圖應(yīng)該從哪個(gè)地方開始畫。我們可以計(jì)算出一個(gè)像素點(diǎn)對(duì)應(yīng)多少個(gè)價(jià)格

價(jià)格和像素形成個(gè)一個(gè)比例計(jì)算是:double?? heightScale = (endY - startY)/(highPrice - lowPrice);

所以價(jià)格25.69應(yīng)該是畫在mStartY = (float) (startY+ (highPrice - 25.69) * heightScale);

部分代碼

@Override

protected void drawKChatBackGround() {

Rect dirty = new Rect(left, kChartTop, right, KChartbottom);

// 畫背景圖的矩形

mCanvas.drawRect(dirty, LineGrayPaint);

PathEffect effects = new DashPathEffect(new float[] { 5, 5, 5, 5 }, 1);

LineGrayPaint.setPathEffect(effects);

Path path = new Path();

int y = kChartTop + 15;

// 畫上面的虛線

path.moveTo(left, y );

path.lineTo(right, y );

String text = getPriceText(highPrice);

int textHeight = (int) (textGrayPaint.descent() - textGrayPaint.ascent());

mCanvas.drawText(text,left - textGrayPaint.measureText(text) - 5,y + textHeight/2 ,textGrayPaint);

double max = highPrice - lowPrice;

if (max > 10){

// 分成四等分

// 畫中間的三根虛線

int n = 4;

double sper = (highPrice - lowPrice) / 4;// 每一等分代表的價(jià)格

for(int i=1;i

y = i*((KChartbottom - kChartTop)/n) + kChartTop;

path.moveTo(left, y);

path.lineTo(right,y);

text = getPriceText(highPrice - i*sper);

mCanvas.drawText(text,left - textGrayPaint.measureText(text) - 5,y + textHeight/2,textGrayPaint);

}

}else{

// 分成兩等分

// 畫中間的虛線

y = (KChartbottom - kChartTop)/2 + kChartTop;

path.moveTo(left, y);

path.lineTo(right, y);

text = getPriceText(highPrice - (highPrice - lowPrice) / 2);

mCanvas.drawText(text,left - textGrayPaint.measureText(text) - 5,y + textHeight/2,textGrayPaint);

}

// 畫下面的虛線

y = KChartbottom - 15;

path.moveTo(left, y);

path.lineTo(right, y);

text = getPriceText(lowPrice);

mCanvas.drawText(text,left - textGrayPaint.measureText(text) - 5,y + textHeight/2,textGrayPaint);

// // 畫等分的虛線和下面的日期

for (int i = num - 1; i > 0; i--) {

int x = left + perWidth * i;

path.moveTo(x, kChartTop);

path.lineTo(x, KChartbottom);

perXPoint[i - 1] = x;

}

mCanvas.drawPath(path, LineGrayPaint);

}

關(guān)鍵詞: android 股票