LayerManager: add cancelGesture method

-  add 'debug' output to see which InputLayer took the event
This commit is contained in:
Hannes Janetzek 2013-04-24 19:43:33 +02:00
parent e24bba1e57
commit 5222609025

View File

@ -37,6 +37,7 @@ import android.view.MotionEvent;
public class LayerManager extends AbstractList<Layer> implements OnGestureListener, public class LayerManager extends AbstractList<Layer> implements OnGestureListener,
OnDoubleTapListener { OnDoubleTapListener {
private final static String TAG = LayerManager.class.getName(); private final static String TAG = LayerManager.class.getName();
private final static boolean debugInput = false;
private final GestureDetector mGestureDetector; private final GestureDetector mGestureDetector;
@ -78,9 +79,16 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
public boolean handleMotionEvent(MotionEvent e) { public boolean handleMotionEvent(MotionEvent e) {
if (mGestureDetector.onTouchEvent(e)) if (!mCancelGesture)
return true; if (mGestureDetector.onTouchEvent(e))
return true;
if (mCancelGesture) {
int action = e.getAction();
if (action == MotionEvent.ACTION_CANCEL ||
action == MotionEvent.ACTION_UP)
mCancelGesture = false;
}
if (onTouchEvent(e)) if (onTouchEvent(e))
return true; return true;
@ -117,13 +125,12 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
int numRenderLayers = 0; int numRenderLayers = 0;
int numInputLayers = 0; int numInputLayers = 0;
Log.d(TAG, "update layers:"); //Log.d(TAG, "update layers:");
for (int i = 0, n = mLayerList.size(); i < n; i++) { for (int i = 0, n = mLayerList.size(); i < n; i++) {
Layer o = mLayerList.get(i); Layer o = mLayerList.get(i);
Log.d(TAG, "\t" + o.getClass().getName()); //Log.d(TAG, "\t" + o.getClass().getName());
if (o.getLayer() != null) if (o.getLayer() != null)
numRenderLayers++; numRenderLayers++;
@ -154,14 +161,29 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
mDirtyLayers = false; mDirtyLayers = false;
} }
private boolean mCancelGesture;
/**
* Call this to not foward events to generic GestureDetector until
* next ACTION_UP or ACTION_CANCEL event. - Use with care for the
* case that an InputLayer recognized the start of its gesture and
* does further processing in only onTouch callback.
*/
public void cancelGesture() {
mCancelGesture = true;
}
public boolean onTouchEvent(final MotionEvent event) { public boolean onTouchEvent(final MotionEvent event) {
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onTouchEvent(event)) if (o.onTouchEvent(event)) {
if (debugInput)
Log.d(TAG, "onTouch\t\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -217,10 +239,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onDoubleTap(e)) if (o.onDoubleTap(e)) {
if (debugInput)
Log.d(TAG, "onDoubleTap\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -229,10 +254,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onDoubleTapEvent(e)) if (o.onDoubleTapEvent(e)) {
if (debugInput)
Log.d(TAG, "onDoubleTapEvent\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -241,10 +269,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onSingleTapConfirmed(e)) if (o.onSingleTapConfirmed(e)) {
if (debugInput)
Log.d(TAG, "onSingleTapConfirmed\tt" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -255,10 +286,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onDown(pEvent)) if (o.onDown(pEvent)) {
if (debugInput)
Log.d(TAG, "onDown\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -268,10 +302,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onFling(pEvent1, pEvent2, pVelocityX, pVelocityY)) if (o.onFling(pEvent1, pEvent2, pVelocityX, pVelocityY)) {
if (debugInput)
Log.d(TAG, "onFling\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -291,10 +328,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onScroll(pEvent1, pEvent2, pDistanceX, pDistanceY)) if (o.onScroll(pEvent1, pEvent2, pDistanceX, pDistanceY)) {
if (debugInput)
Log.d(TAG, "onScroll\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }
@ -313,10 +353,13 @@ public class LayerManager extends AbstractList<Layer> implements OnGestureListen
if (mDirtyLayers) if (mDirtyLayers)
updateLayers(); updateLayers();
for (InputLayer o : mInputLayer) for (InputLayer o : mInputLayer) {
if (o.onSingleTapUp(pEvent)) if (o.onSingleTapUp(pEvent)) {
if (debugInput)
Log.d(TAG, "onSingleTapUp\t" + o.getClass());
return true; return true;
}
}
return false; return false;
} }