Android Open Source - Android-Charts Slip Gesture Detector






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

/*
 * SlipGestureDetector.java//w  ww.ja  va 2 s. 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.event;

import android.graphics.PointF;
import android.view.MotionEvent;

/**
 * <p>
 * en
 * </p>
 * <p>
 * jp
 * </p>
 * <p>
 * cn
 * </p>
 * 
 * @author limc
 * @version v1.0 2014/06/23 16:48:07
 * 
 */
public class SlipGestureDetector<T extends ISlipable> extends ZoomGestureDetector<IZoomable> {
  protected PointF startPointA;
  protected PointF startPointB;
  
  private OnSlipGestureListener onSlipGestureListener;

  public SlipGestureDetector(ISlipable slipable){
    super(slipable);
    if (slipable != null) {
      this.onSlipGestureListener = slipable.getOnSlipGestureListener();
    }
  }

  /*
   * (non-Javadoc)
   * 
   * @param event
   * 
   * @return
   * 
   * @see
   * cn.limc.androidcharts.event.IGestureDetector#onTouchEvent(android.view
   * .MotionEvent)
   */
  public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    // ???????
    case MotionEvent.ACTION_DOWN:
      break;
    case MotionEvent.ACTION_UP:
      startPointA = null;
      startPointB = null;
      break;
    case MotionEvent.ACTION_POINTER_UP:
      startPointA = null;
      startPointB = null;
    case MotionEvent.ACTION_POINTER_DOWN:
      olddistance = calcDistance(event);
      if (olddistance > MIN_DISTANCE) {
        touchMode = TOUCH_MODE_MULTI;
        startPointA = new PointF(event.getX(0), event.getY(0));
        startPointB = new PointF(event.getX(1), event.getY(1));
      }
      return true;
      //break;
    case MotionEvent.ACTION_MOVE:
      if (touchMode == TOUCH_MODE_MULTI) {
        newdistance = calcDistance(event);
        if (newdistance > MIN_DISTANCE) {
          if (startPointA.x >= event.getX(0)
              && startPointB.x >= event.getX(1)) {
            if (onSlipGestureListener != null) {
              onSlipGestureListener.onMoveRight((ISlipable)instance,event);
            }
          } else if (startPointA.x <= event.getX(0)
              && startPointB.x <= event.getX(1)) {
            if (onSlipGestureListener != null) {
              onSlipGestureListener.onMoveLeft((ISlipable)instance,event);
            }
          } else {
            if (Math.abs(newdistance - olddistance) > MIN_DISTANCE) {
              if (onZoomGestureListener != null) {
                if (newdistance > olddistance) {
                  onZoomGestureListener.onZoomIn((IZoomable)instance,event);
                } else {
                  onZoomGestureListener.onZoomOut((IZoomable)instance,event);
                }
              }
              // reset distance
              olddistance = newdistance;
            }
          }
          startPointA = new PointF(event.getX(0), event.getY(0));
          startPointB = new PointF(event.getX(1), event.getY(1));

          return true;
        }
      }
      break;
    }
    return super.onTouchEvent(event);
  }

}




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