Back to project page Android-Gestures.
The source code is released under:
Copyright (c) 2010, Michael Marner (michael@20papercups.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the fol...
If you think the Android project Android-Gestures listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright (c) 2010, Michael Marner (michael@20papercups.net) * All rights reserved./* w w w. java 2 s.c o m*/ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the <organization> nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.michaelmarner.gesturedemo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.view.MotionEvent; import android.view.View; import com.michaelmarner.gestures.*; import java.util.*; public class GestureView extends View { private Gesture currentGesture; private GestureMode opMode; private LinkedList<GestureListener> listeners; public GestureView(Context context) { super(context); listeners = new LinkedList<GestureListener>(); currentGesture = new Gesture(); } public GestureView(Context context, android.util.AttributeSet as) { super(context, as); listeners = new LinkedList<GestureListener>(); currentGesture = new Gesture(); } public void addListener(GestureListener l) { this.listeners.add(l); } protected void onDraw(Canvas c) { c.drawRGB(60, 60, 60); Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStrokeWidth(2); paint.setStyle(Style.STROKE); List<Point> points = currentGesture.getPoints(); for (int i=1; i < points.size(); ++i) { Point p0 = points.get(i-1); Point p1 = points.get(i); c.drawLine(p0.x, p0.y, p1.x, p1.y, paint); } } public boolean onTouchEvent(MotionEvent e) { invalidate(); switch (e.getAction()) { case MotionEvent.ACTION_DOWN: currentGesture.add(new Point(e.getX(), e.getY())); break; case MotionEvent.ACTION_MOVE: currentGesture.add(new Point(e.getX(), e.getY())); break; case MotionEvent.ACTION_UP: currentGesture.add(new Point(e.getX(), e.getY())); for (GestureListener l : listeners) { if (l != null) l.handleGesture(currentGesture); } currentGesture = new Gesture(); break; } return true; } }