Android Open Source - DiceInDark Gesture Handler






From Project

Back to project page DiceInDark.

License

The source code is released under:

GNU General Public License

If you think the Android project DiceInDark 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

/*    Dice in the dark. D & D app for the blind and seeing impaired,
*    Copyright (C) <2013r>  <Lovisa Irpa Helgadottir>
*//  ww  w . j  a  v a 2s. c  o  m
*    This program is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package com.example.framework.impl;


import java.util.ArrayList;
import java.util.List;

import com.example.framework.Input.GestureEvent;
import com.example.framework.Input.TouchEvent;
import com.example.framework.Pool.PoolObjectFactory;
import com.example.framework.Pool;


import android.content.Context;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;

public class GestureHandler implements TouchHandler{
   private static final int MAX_TOUCHPOINTS = 10;
    
      boolean[] isTouched = new boolean[MAX_TOUCHPOINTS];
      int[] touchX = new int[MAX_TOUCHPOINTS];
      int[] touchY = new int[MAX_TOUCHPOINTS];
      int[] id = new int[MAX_TOUCHPOINTS];
      
    private GestureDetector gestures;
    Pool<GestureEvent> gestureEventPool;
    List<GestureEvent> gestureEvents = new ArrayList<GestureEvent>();
    List<GestureEvent> gestureEventsBuffer = new ArrayList<GestureEvent>();

      

      
      public GestureHandler(Context context, View view) {

          
          PoolObjectFactory<GestureEvent> factory1 = new PoolObjectFactory<GestureEvent>() {
              public GestureEvent createObject() {
                  return new GestureEvent();
              }
          };
          gestureEventPool = new Pool<GestureEvent>(factory1, 100);
          gestures = new GestureDetector(context, new GestureListener(this));
          
          view.setOnTouchListener(this);

      }

      public boolean onTouch(View v, MotionEvent event) {
          synchronized (this) {
            gestures.onTouchEvent(event);
              return true;
          }
      }

      public boolean isTouchDown(int pointer) {
          synchronized (this) {
              int index = getIndex(pointer);
              if (index < 0 || index >= MAX_TOUCHPOINTS)
                  return false;
              else
                  return isTouched[index];
          }
      }

      public int getTouchX(int pointer) {
          synchronized (this) {
              int index = getIndex(pointer);
              if (index < 0 || index >= MAX_TOUCHPOINTS)
                  return 0;
              else
                  return touchX[index];
          }
      }

      public int getTouchY(int pointer) {
          synchronized (this) {
              int index = getIndex(pointer);
              if (index < 0 || index >= MAX_TOUCHPOINTS)
                  return 0;
              else
                  return touchY[index];
          }
      }

      public List<TouchEvent> getTouchEvents() {
        return null;
      }
      public List<GestureEvent> getGestureEvents() {
          synchronized (this) {
              int len = gestureEvents.size();
              for (int i = 0; i < len; i++)
                  gestureEventPool.free(gestureEvents.get(i));
              gestureEvents.clear();
              gestureEvents.addAll(gestureEventsBuffer);
              gestureEventsBuffer.clear();
              return gestureEvents;
          }
      }
      
      // returns the index for a given pointerId or -1 if no index.
      private int getIndex(int pointerId) {
          for (int i = 0; i < MAX_TOUCHPOINTS; i++) {
              if (id[i] == pointerId) {
                  return i;
              }
          }
          return -1;
      }
  }
  class GestureListener implements OnGestureListener, OnDoubleTapListener {
      private static final String DEBUG_TAG = "GestureListener";
    GestureHandler handler; 
    
    public GestureListener(GestureHandler handler){
      this.handler = handler;
    }
     @Override
       public boolean onDown(MotionEvent e) {
           Log.v(DEBUG_TAG, "onDown");
           return true;
       }

       @Override
       public boolean onFling(MotionEvent e1, MotionEvent e2,
               final float velocityX, final float velocityY) {
           Log.v(DEBUG_TAG, "onFling");
         GestureEvent event;
         event = handler.gestureEventPool.newObject();
         if(e1.getRawX()<e2.getRawX())
           event.type= GestureEvent.FLING_RIGHT;
         else 
           event.type = GestureEvent.FLING_LEFT;
         
         handler.gestureEventsBuffer.add(event);

           
           return true;
       }

       @Override
       public boolean onDoubleTap(MotionEvent e) {
           Log.v(DEBUG_TAG, "onDoubleTap");
           GestureEvent event;
         event = handler.gestureEventPool.newObject();
         event.type = GestureEvent.DOUBLE_TAP;
         handler.gestureEventsBuffer.add(event);
           return true;
       }

       @Override
       public void onLongPress(MotionEvent e) {
           Log.v(DEBUG_TAG, "onLongPress");
       }

       @Override
       public boolean onScroll(MotionEvent e1, MotionEvent e2,
               float distanceX, float distanceY) {
           Log.v(DEBUG_TAG, "onScroll");

           return false;
       }

       @Override
       public void onShowPress(MotionEvent e) {
           Log.v(DEBUG_TAG, "onShowPress");
       }

       @Override
       public boolean onSingleTapUp(MotionEvent e) {
           Log.v(DEBUG_TAG, "onSingleTapUp");
           GestureEvent event;
         event = handler.gestureEventPool.newObject();
         event.type = GestureEvent.SINGLE_TAP;
         handler.gestureEventsBuffer.add(event);
           return true;
       }

       @Override
       public boolean onDoubleTapEvent(MotionEvent e) {
           Log.v(DEBUG_TAG, "onDoubleTapEvent");
           return false;
       }

       @Override
       public boolean onSingleTapConfirmed(MotionEvent e) {
           Log.v(DEBUG_TAG, "onSingleTapConfirmed");
           return false;
       }

   }




Java Source Code List

com.example.diceindark.Assets.java
com.example.diceindark.DiceInDark.java
com.example.diceindark.DiceRender.java
com.example.diceindark.DiceScreen.java
com.example.diceindark.Die.java
com.example.diceindark.MainMenuScreen.java
com.example.framework.AndroidFileIO.java
com.example.framework.Audio.java
com.example.framework.FileIO.java
com.example.framework.GameObject.java
com.example.framework.Game.java
com.example.framework.Graphics.java
com.example.framework.Input.java
com.example.framework.Pixmap.java
com.example.framework.Pool.java
com.example.framework.Screen.java
com.example.framework.Sound.java
com.example.framework.gl.Animation.java
com.example.framework.gl.BindableVertices.java
com.example.framework.gl.Camera2D.java
com.example.framework.gl.Font.java
com.example.framework.gl.SpriteBatcher.java
com.example.framework.gl.TextureRegion.java
com.example.framework.gl.Texture.java
com.example.framework.gl.Vertices.java
com.example.framework.impl.AccelerometerHandler.java
com.example.framework.impl.AndroidAudio.java
com.example.framework.impl.AndroidGraphics.java
com.example.framework.impl.AndroidInput.java
com.example.framework.impl.AndroidPixmap.java
com.example.framework.impl.AndroidSound.java
com.example.framework.impl.GLGame.java
com.example.framework.impl.GLGraphics.java
com.example.framework.impl.GLScreen.java
com.example.framework.impl.GestureHandler.java
com.example.framework.impl.KeyboardHandler.java
com.example.framework.impl.TouchHandler.java
com.example.framework.math.Circle.java
com.example.framework.math.OverlapTester.java
com.example.framework.math.Rectangle.java
com.example.framework.math.Vector2.java
com.plovergames.diceindark.Assets.java
com.plovergames.diceindark.DiceInDark.java
com.plovergames.diceindark.DiceRender.java
com.plovergames.diceindark.DiceScreen.java
com.plovergames.diceindark.Die.java
com.plovergames.diceindark.MainMenuScreen.java
com.plovergames.framework.AndroidFileIO.java
com.plovergames.framework.Audio.java
com.plovergames.framework.FileIO.java
com.plovergames.framework.GameObject.java
com.plovergames.framework.Game.java
com.plovergames.framework.Graphics.java
com.plovergames.framework.Input.java
com.plovergames.framework.Pixmap.java
com.plovergames.framework.Pool.java
com.plovergames.framework.Screen.java
com.plovergames.framework.Sound.java
com.plovergames.framework.gl.Animation.java
com.plovergames.framework.gl.BindableVertices.java
com.plovergames.framework.gl.Camera2D.java
com.plovergames.framework.gl.Font.java
com.plovergames.framework.gl.SpriteBatcher.java
com.plovergames.framework.gl.TextureRegion.java
com.plovergames.framework.gl.Texture.java
com.plovergames.framework.gl.Vertices.java
com.plovergames.framework.impl.AccelerometerHandler.java
com.plovergames.framework.impl.AndroidAudio.java
com.plovergames.framework.impl.AndroidGraphics.java
com.plovergames.framework.impl.AndroidInput.java
com.plovergames.framework.impl.AndroidPixmap.java
com.plovergames.framework.impl.AndroidSound.java
com.plovergames.framework.impl.GLGame.java
com.plovergames.framework.impl.GLGraphics.java
com.plovergames.framework.impl.GLScreen.java
com.plovergames.framework.impl.GestureHandler.java
com.plovergames.framework.impl.TouchHandler.java
com.plovergames.framework.math.Rectangle.java
com.plovergames.framework.math.Vector2.java