@@ -93,6 +93,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
|
|
||||||
private float mTotalLength;
|
private float mTotalLength;
|
||||||
private boolean mIsGesturing = false;
|
private boolean mIsGesturing = false;
|
||||||
|
private boolean mPreviousWasGesturing = false;
|
||||||
private boolean mInterceptEvents = true;
|
private boolean mInterceptEvents = true;
|
||||||
private boolean mIsListeningForGestures;
|
private boolean mIsListeningForGestures;
|
||||||
|
|
||||||
@@ -425,6 +426,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
|
|
||||||
clear(false);
|
clear(false);
|
||||||
mIsGesturing = false;
|
mIsGesturing = false;
|
||||||
|
mPreviousWasGesturing = false;
|
||||||
mStrokeBuffer.clear();
|
mStrokeBuffer.clear();
|
||||||
|
|
||||||
final ArrayList<OnGesturingListener> otherListeners = mOnGesturingListeners;
|
final ArrayList<OnGesturingListener> otherListeners = mOnGesturingListeners;
|
||||||
@@ -442,8 +444,10 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
@Override
|
@Override
|
||||||
public boolean dispatchTouchEvent(MotionEvent event) {
|
public boolean dispatchTouchEvent(MotionEvent event) {
|
||||||
if (isEnabled()) {
|
if (isEnabled()) {
|
||||||
boolean cancelDispatch = (mIsGesturing || (mCurrentGesture != null &&
|
final boolean cancelDispatch = (mIsGesturing || (mCurrentGesture != null &&
|
||||||
mCurrentGesture.getStrokesCount() > 0)) && mInterceptEvents;
|
mCurrentGesture.getStrokesCount() > 0 && mPreviousWasGesturing)) &&
|
||||||
|
mInterceptEvents;
|
||||||
|
|
||||||
processEvent(event);
|
processEvent(event);
|
||||||
|
|
||||||
if (cancelDispatch) {
|
if (cancelDispatch) {
|
||||||
@@ -451,6 +455,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
super.dispatchTouchEvent(event);
|
super.dispatchTouchEvent(event);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -647,6 +652,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mStrokeBuffer.clear();
|
mStrokeBuffer.clear();
|
||||||
|
mPreviousWasGesturing = mIsGesturing;
|
||||||
mIsGesturing = false;
|
mIsGesturing = false;
|
||||||
|
|
||||||
final ArrayList<OnGesturingListener> listeners = mOnGesturingListeners;
|
final ArrayList<OnGesturingListener> listeners = mOnGesturingListeners;
|
||||||
@@ -688,6 +694,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
fireOnGesturePerformed();
|
fireOnGesturePerformed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mPreviousWasGesturing = false;
|
||||||
mIsFadingOut = false;
|
mIsFadingOut = false;
|
||||||
mFadingHasStarted = false;
|
mFadingHasStarted = false;
|
||||||
mPath.rewind();
|
mPath.rewind();
|
||||||
@@ -707,6 +714,7 @@ public class GestureOverlayView extends FrameLayout {
|
|||||||
mFadingHasStarted = false;
|
mFadingHasStarted = false;
|
||||||
mPath.rewind();
|
mPath.rewind();
|
||||||
mCurrentGesture = null;
|
mCurrentGesture = null;
|
||||||
|
mPreviousWasGesturing = false;
|
||||||
setPaintAlpha(255);
|
setPaintAlpha(255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -472,7 +472,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
private ViewTreeObserver.OnGlobalLayoutListener mGesturesLayoutListener;
|
private ViewTreeObserver.OnGlobalLayoutListener mGesturesLayoutListener;
|
||||||
private boolean mGlobalLayoutListenerAddedGestures;
|
private boolean mGlobalLayoutListenerAddedGestures;
|
||||||
private boolean mInstallGesturesOverlay;
|
private boolean mInstallGesturesOverlay;
|
||||||
private boolean mPreviousGesturing;
|
|
||||||
|
|
||||||
private boolean mGlobalLayoutListenerAddedFilter;
|
private boolean mGlobalLayoutListenerAddedFilter;
|
||||||
|
|
||||||
@@ -737,8 +736,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
mGesturesOverlay.removeAllOnGestureListeners();
|
mGesturesOverlay.removeAllOnGestureListeners();
|
||||||
mGesturesOverlay.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);
|
mGesturesOverlay.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);
|
||||||
mGesturesOverlay.addOnGesturePerformedListener(new GesturesProcessor());
|
mGesturesOverlay.addOnGesturePerformedListener(new GesturesProcessor());
|
||||||
|
|
||||||
mPreviousGesturing = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -753,25 +750,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
@Override
|
@Override
|
||||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||||
if (mGestures != GESTURES_NONE) {
|
if (mGestures != GESTURES_NONE) {
|
||||||
if (ev.getAction() != MotionEvent.ACTION_DOWN || mFastScroller == null ||
|
if ((ev.getAction() != MotionEvent.ACTION_DOWN || mFastScroller == null ||
|
||||||
!mFastScroller.isPointInside(ev.getX(), ev.getY())) {
|
!mFastScroller.isPointInside(ev.getX(), ev.getY())) &&
|
||||||
|
mGesturesPopup.isShowing()) {
|
||||||
if (mGesturesPopup.isShowing()) {
|
|
||||||
mGesturesOverlay.dispatchTouchEvent(ev);
|
mGesturesOverlay.dispatchTouchEvent(ev);
|
||||||
|
|
||||||
final boolean isGesturing = mGesturesOverlay.isGesturing();
|
|
||||||
|
|
||||||
if (!isGesturing) {
|
|
||||||
mPreviousGesturing = isGesturing;
|
|
||||||
return super.dispatchTouchEvent(ev);
|
|
||||||
} else if (!mPreviousGesturing){
|
|
||||||
mPreviousGesturing = isGesturing;
|
|
||||||
final MotionEvent event = MotionEvent.obtain(ev);
|
|
||||||
event.setAction(MotionEvent.ACTION_CANCEL);
|
|
||||||
super.dispatchTouchEvent(event);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user