Back to project page Android-Charts.
The source code is released under:
Apache License??Version 2.0, January 2004??http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and condi...
If you think the Android project Android-Charts listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * SlipCandleStickChart.java/*from ww w . ja v a 2s. c o m*/ * Android-Charts * * Created by limc on 2014. * * Copyright 2011 limc.cn All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cn.limc.androidcharts.view; import cn.limc.androidcharts.entity.OHLCEntity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PointF; import android.util.AttributeSet; /** * <p> * en * </p> * <p> * jp * </p> * <p> * cn * </p> * * @author limc * @version v1.0 2014/01/21 11:37:51 * */ public class SlipCandleStickChart extends SlipStickChart { /** * <p> * Default price up stick's border color * </p> * <p> * ??????????????????????????? * </p> * <p> * ????????? * </p> */ public static final int DEFAULT_POSITIVE_STICK_BORDER_COLOR = Color.RED; /** * <p> * Default price up stick's fill color * </p> * <p> * ??????????????????????? * </p> * <p> * ????????? * </p> */ public static final int DEFAULT_POSITIVE_STICK_FILL_COLOR = Color.RED; /** * <p> * Default price down stick's border color * </p> * <p> * ???????????????????????? * </p> * <p> * ????????? * </p> */ public static final int DEFAULT_NEGATIVE_STICK_BORDER_COLOR = Color.GREEN; /** * <p> * Default price down stick's fill color * </p> * <p> * ???????????????????? * </p> * <p> * ????????? * </p> */ public static final int DEFAULT_NEGATIVE_STICK_FILL_COLOR = Color.GREEN; /** * <p> * Default price no change stick's color (cross-star,T-like etc.) * </p> * <p> * ???????????????????? * </p> * <p> * ??????????? * </p> */ public static final int DEFAULT_CROSS_STAR_COLOR = Color.LTGRAY; /** * <p> * Price up stick's border color * </p> * <p> * ?????????????????? * </p> * <p> * ??????? * </p> */ private int positiveStickBorderColor = DEFAULT_POSITIVE_STICK_BORDER_COLOR; /** * <p> * Price up stick's fill color * </p> * <p> * ?????????????? * </p> * <p> * ??????? * </p> */ private int positiveStickFillColor = DEFAULT_POSITIVE_STICK_FILL_COLOR; /** * <p> * Price down stick's border color * </p> * <p> * ??????????????? * </p> * <p> * ??????? * </p> */ private int negativeStickBorderColor = DEFAULT_NEGATIVE_STICK_BORDER_COLOR; /** * <p> * Price down stick's fill color * </p> * <p> * ??????????? * </p> * <p> * ??????? * </p> */ private int negativeStickFillColor = DEFAULT_NEGATIVE_STICK_FILL_COLOR; /** * <p> * Price no change stick's color (cross-star,T-like etc.) * </p> * <p> * ????????????????????? * </p> * <p> * ???????????????,????,T?????? * </p> */ private int crossStarColor = DEFAULT_CROSS_STAR_COLOR; /** * <p> * Constructor of SlipCandleStickChart * </p> * <p> * SlipCandleStickChart???????? * </p> * <p> * SlipCandleStickChart??????????? * </p> * * @param context * @param attrs * @param defStyle */ public SlipCandleStickChart(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } /** * <p> * Constructor of SlipCandleStickChart * </p> * <p> * SlipCandleStickChart???????? * </p> * <p> * SlipCandleStickChart??????????? * </p> * * @param context * @param attrs */ public SlipCandleStickChart(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } /** * <p> * Constructor of SlipCandleStickChart * </p> * <p> * SlipCandleStickChart???????? * </p> * <p> * SlipCandleStickChart??????????? * </p> * * @param context */ public SlipCandleStickChart(Context context) { super(context); // TODO Auto-generated constructor stub } /* * (non-Javadoc) * * <p>Called when is going to draw this chart<p> <p>???????????????????????<p> * <p>???????<p> * * @param canvas * * @see android.view.View#onDraw(android.graphics.Canvas) */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } /** * <p> * draw sticks * </p> * <p> * ?????????? * </p> * <p> * ?????? * </p> * * @param canvas */ @Override protected void drawSticks(Canvas canvas) { if (null == stickData) { return; } if (stickData.size() <= 0) { return; } float stickWidth = dataQuadrant.getQuadrantPaddingWidth() / displayNumber - stickSpacing; float stickX = dataQuadrant.getQuadrantPaddingStartX(); Paint mPaintPositive = new Paint(); mPaintPositive.setColor(positiveStickFillColor); Paint mPaintNegative = new Paint(); mPaintNegative.setColor(negativeStickFillColor); Paint mPaintCross = new Paint(); mPaintCross.setColor(crossStarColor); for (int i = displayFrom; i < displayFrom + displayNumber; i++) { OHLCEntity ohlc = (OHLCEntity) stickData.get(i); float openY = (float) ((1f - (ohlc.getOpen() - minValue) / (maxValue - minValue)) * (dataQuadrant.getQuadrantPaddingHeight()) + dataQuadrant.getQuadrantPaddingStartY()); float highY = (float) ((1f - (ohlc.getHigh() - minValue) / (maxValue - minValue)) * (dataQuadrant.getQuadrantPaddingHeight()) + dataQuadrant.getQuadrantPaddingStartY()); float lowY = (float) ((1f - (ohlc.getLow() - minValue) / (maxValue - minValue)) * (dataQuadrant.getQuadrantPaddingHeight()) + dataQuadrant.getQuadrantPaddingStartY()); float closeY = (float) ((1f - (ohlc.getClose() - minValue) / (maxValue - minValue)) * (dataQuadrant.getQuadrantPaddingHeight()) + dataQuadrant.getQuadrantPaddingStartY()); if (ohlc.getOpen() < ohlc.getClose()) { // stick or line if (stickWidth >= 2f) { canvas.drawRect(stickX, closeY, stickX + stickWidth, openY, mPaintPositive); } canvas.drawLine(stickX + stickWidth / 2f, highY, stickX + stickWidth / 2f, lowY, mPaintPositive); } else if (ohlc.getOpen() > ohlc.getClose()) { // stick or line if (stickWidth >= 2f) { canvas.drawRect(stickX, openY, stickX + stickWidth, closeY, mPaintNegative); } canvas.drawLine(stickX + stickWidth / 2f, highY, stickX + stickWidth / 2f, lowY, mPaintNegative); } else { // line or point if (stickWidth >= 2f) { canvas.drawLine(stickX, closeY, stickX + stickWidth, openY, mPaintCross); } canvas.drawLine(stickX + stickWidth / 2f, highY, stickX + stickWidth / 2f, lowY, mPaintCross); } // next x stickX = stickX + stickSpacing + stickWidth; } } @Override protected PointF calcBindPoint(float x ,float y) { float calcX = 0; float calcY = 0; int index = calcSelectedIndex(x,y); float stickWidth = dataQuadrant.getQuadrantPaddingWidth() / displayNumber; OHLCEntity stick = (OHLCEntity)stickData.get(index); calcY = (float) ((1f - (stick.getClose() - minValue) / (maxValue - minValue)) * (dataQuadrant.getQuadrantPaddingHeight()) + dataQuadrant.getQuadrantPaddingStartY()); calcX = dataQuadrant.getQuadrantPaddingStartX() + stickWidth * (index - displayFrom) + stickWidth / 2; return new PointF(calcX,calcY); } /** * @return the positiveStickBorderColor */ public int getPositiveStickBorderColor() { return positiveStickBorderColor; } /** * @param positiveStickBorderColor * the positiveStickBorderColor to set */ public void setPositiveStickBorderColor(int positiveStickBorderColor) { this.positiveStickBorderColor = positiveStickBorderColor; } /** * @return the positiveStickFillColor */ public int getPositiveStickFillColor() { return positiveStickFillColor; } /** * @param positiveStickFillColor * the positiveStickFillColor to set */ public void setPositiveStickFillColor(int positiveStickFillColor) { this.positiveStickFillColor = positiveStickFillColor; } /** * @return the negativeStickBorderColor */ public int getNegativeStickBorderColor() { return negativeStickBorderColor; } /** * @param negativeStickBorderColor * the negativeStickBorderColor to set */ public void setNegativeStickBorderColor(int negativeStickBorderColor) { this.negativeStickBorderColor = negativeStickBorderColor; } /** * @return the negativeStickFillColor */ public int getNegativeStickFillColor() { return negativeStickFillColor; } /** * @param negativeStickFillColor * the negativeStickFillColor to set */ public void setNegativeStickFillColor(int negativeStickFillColor) { this.negativeStickFillColor = negativeStickFillColor; } /** * @return the crossStarColor */ public int getCrossStarColor() { return crossStarColor; } /** * @param crossStarColor * the crossStarColor to set */ public void setCrossStarColor(int crossStarColor) { this.crossStarColor = crossStarColor; } }