安卓系統(tǒng)怎么做股票行情K線圖?android股票行情K線圖制作教程
安卓系統(tǒng)怎么做股票行情K線圖?需要做股票行情app的,就來看下文教程學習android股票行情K線圖的制作方法吧。
背景圖是利用canvas先畫出一個矩形,然后再畫幾根虛線,均線圖是通過path來繪制的,總之圖的繪制是很簡單的,我就不在這里作介紹了,大家可以去github下載源碼看看。涉及到均線、最高價、最低價、收盤價、開盤價的概念大家可以百度一下。
計算問題
可以看到分時圖、日K、月K的左邊的成交價格都是不一樣的,而我們的k線都是通過這個價格來繪制的,也就是說價格是時刻變動,那么我們的k線繪制也是變動的。假設我們要計算分時圖中價格為25.69的那一分鐘應該如何畫,畫在屏幕中的哪一個位置,那么這個應該怎么畫呢,價格是變動的,畫的位置也是變動的,但是有一點我們屏幕的大小是不變的。所以我們可以通過背景圖的高度來計算某個價格的線圖應該從哪個地方開始畫。我們可以計算出一個像素點對應多少個價格
價格和像素形成個一個比例計算是:double?? heightScale = (endY - startY)/(highPrice - lowPrice);
所以價格25.69應該是畫在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;// 每一等分代表的價格
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); } 關鍵詞: android 股票