diff options
author | Doris Liu <tianliu@google.com> | 2013-04-16 09:50:56 -0700 |
---|---|---|
committer | Doris Liu <tianliu@google.com> | 2013-04-18 13:59:42 -0700 |
commit | 9cdfe00cf57f05f81e6d02ca050e6afd8cc4a25f (patch) | |
tree | 6460980a3be0f75d4dcd5b34fe966b2882caa17c /src/com/android/camera/PreviewGestures.java | |
parent | 172d37e178a33fd1138d7e3a9b08f8c541959cc3 (diff) | |
download | android_packages_apps_Snap-9cdfe00cf57f05f81e6d02ca050e6afd8cc4a25f.tar.gz android_packages_apps_Snap-9cdfe00cf57f05f81e6d02ca050e6afd8cc4a25f.tar.bz2 android_packages_apps_Snap-9cdfe00cf57f05f81e6d02ca050e6afd8cc4a25f.zip |
Allow swiping to filmstrip from blocker bar
Bug: 8607910
Change-Id: I69bfcf8d95d6071be7d65fbf433916740cbb655c
Diffstat (limited to 'src/com/android/camera/PreviewGestures.java')
-rw-r--r-- | src/com/android/camera/PreviewGestures.java | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java index 351da0afd..b968a0244 100644 --- a/src/com/android/camera/PreviewGestures.java +++ b/src/com/android/camera/PreviewGestures.java @@ -59,6 +59,7 @@ public class PreviewGestures private MotionEvent mCurrent; private ScaleGestureDetector mScale; private List<View> mReceivers; + private List<View> mUnclickableAreas; private int mMode; private int mSlop; private int mTapTimeout; @@ -127,12 +128,41 @@ public class PreviewGestures mReceivers.add(v); } + public void addUnclickableArea(View v) { + if (mUnclickableAreas == null) { + mUnclickableAreas = new ArrayList<View>(); + } + mUnclickableAreas.add(v); + } + public void clearTouchReceivers() { if (mReceivers != null) { mReceivers.clear(); } } + public void clearUnclickableAreas() { + if (mUnclickableAreas != null) { + mUnclickableAreas.clear(); + } + } + + private boolean checkClickable(MotionEvent m) { + if (mUnclickableAreas != null) { + for (View v : mUnclickableAreas) { + if (isInside(m, v)) { + return false; + } + } + } + return true; + } + + public void reset() { + clearTouchReceivers(); + clearUnclickableAreas(); + } + public boolean dispatchTouch(MotionEvent m) { if (!mEnabled) { return mActivity.superDispatchTouchEvent(m); @@ -149,7 +179,7 @@ public class PreviewGestures mMode = MODE_PIE; return sendToPie(m); } - if (mPie != null && !mZoomOnly) { + if (mPie != null && !mZoomOnly && checkClickable(m)) { mHandler.sendEmptyMessageDelayed(MSG_PIE, TIMEOUT_PIE); } if (mZoom != null) { @@ -216,9 +246,10 @@ public class PreviewGestures } if (MotionEvent.ACTION_UP == m.getActionMasked()) { cancelPie(); - cancelActivityTouchHandling(m); // must have been tap - if (m.getEventTime() - mDown.getEventTime() < mTapTimeout) { + if (m.getEventTime() - mDown.getEventTime() < mTapTimeout + && checkClickable(m)) { + cancelActivityTouchHandling(m); mTapListener.onSingleTapUp(null, (int) mDown.getX() - mOverlay.getWindowPositionX(), (int) mDown.getY() - mOverlay.getWindowPositionY()); |