Android Open Source - Android-Charts Slip Candle Stick Chart






From Project

Back to project page Android-Charts.

License

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.

Java Source Code

/*
 * 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;
  }
}




Java Source Code List

cn.limc.androidcharts.AndroidChartsActivity.java
cn.limc.androidcharts.common.Axis.java
cn.limc.androidcharts.common.ChartRender.java
cn.limc.androidcharts.common.CrossLines.java
cn.limc.androidcharts.common.HorizontalAxis.java
cn.limc.androidcharts.common.IAxis.java
cn.limc.androidcharts.common.IChart.java
cn.limc.androidcharts.common.ICrossLines.java
cn.limc.androidcharts.common.IDataCursor.java
cn.limc.androidcharts.common.IFlexableGrid.java
cn.limc.androidcharts.common.IGrid.java
cn.limc.androidcharts.common.IQuadrant.java
cn.limc.androidcharts.common.IRender.java
cn.limc.androidcharts.common.Quadrant.java
cn.limc.androidcharts.common.SectionDataCursor.java
cn.limc.androidcharts.common.SimpleDataCursor.java
cn.limc.androidcharts.common.VerticalAxis.java
cn.limc.androidcharts.entity.ColoredStickEntity.java
cn.limc.androidcharts.entity.DateValueEntity.java
cn.limc.androidcharts.entity.IChartData.java
cn.limc.androidcharts.entity.IEntity.java
cn.limc.androidcharts.entity.IHasColor.java
cn.limc.androidcharts.entity.IHasDate.java
cn.limc.androidcharts.entity.IMeasurable.java
cn.limc.androidcharts.entity.IStickEntity.java
cn.limc.androidcharts.entity.LineEntity.java
cn.limc.androidcharts.entity.ListChartData.java
cn.limc.androidcharts.entity.MACDEntity.java
cn.limc.androidcharts.entity.OHLCEntity.java
cn.limc.androidcharts.entity.StickEntity.java
cn.limc.androidcharts.entity.TitleValueColorEntity.java
cn.limc.androidcharts.entity.TitleValueEntity.java
cn.limc.androidcharts.event.IDisplayCursorListener.java
cn.limc.androidcharts.event.IGestureDetector.java
cn.limc.androidcharts.event.ISlipable.java
cn.limc.androidcharts.event.ITouchable.java
cn.limc.androidcharts.event.IZoomable.java
cn.limc.androidcharts.event.OnSlipGestureListener.java
cn.limc.androidcharts.event.OnTouchGestureListener.java
cn.limc.androidcharts.event.OnZoomGestureListener.java
cn.limc.androidcharts.event.SlipGestureDetector.java
cn.limc.androidcharts.event.TouchGestureDetector.java
cn.limc.androidcharts.event.ZoomGestureDetector.java
cn.limc.androidcharts.mole.AbstractMole.java
cn.limc.androidcharts.mole.IMoleProvider.java
cn.limc.androidcharts.mole.IMole.java
cn.limc.androidcharts.mole.RectMole.java
cn.limc.androidcharts.mole.StickMole.java
cn.limc.androidcharts.view.AbstractBaseChart.java
cn.limc.androidcharts.view.BOLLMASlipCandleStickChart.java
cn.limc.androidcharts.view.CandleStickChart.java
cn.limc.androidcharts.view.ColoredSlipStickChart.java
cn.limc.androidcharts.view.DataGridChart.java
cn.limc.androidcharts.view.GridChart.java
cn.limc.androidcharts.view.LineChart.java
cn.limc.androidcharts.view.MACDChart.java
cn.limc.androidcharts.view.MACandleStickChart.java
cn.limc.androidcharts.view.MASlipCandleStickChart.java
cn.limc.androidcharts.view.MASlipStickChart.java
cn.limc.androidcharts.view.MAStickChart.java
cn.limc.androidcharts.view.MinusStickChart.java
cn.limc.androidcharts.view.PeriodDataGridChart.java
cn.limc.androidcharts.view.PieChart.java
cn.limc.androidcharts.view.RadarChart.java
cn.limc.androidcharts.view.RoseChart.java
cn.limc.androidcharts.view.RoundChart.java
cn.limc.androidcharts.view.SlipAreaChart.java
cn.limc.androidcharts.view.SlipBandAreaChart.java
cn.limc.androidcharts.view.SlipCandleStickChart.java
cn.limc.androidcharts.view.SlipLineChart.java
cn.limc.androidcharts.view.SlipMinusStickChart.java
cn.limc.androidcharts.view.SlipStickChart.java
cn.limc.androidcharts.view.SpiderWebChart.java
cn.limc.androidcharts.view.StickChart.java