summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2012-10-19 14:10:46 -0700
committernicolasroard <nicolasroard@google.com>2012-10-19 15:43:26 -0700
commiteb45a40ee1e2c1f541dbfc9316a116c861a3bf7b (patch)
tree98b6aed0618b1ea51d21f004080d22241e7c7f15 /src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
parentb184f83254e8a930112c4db9364669a936f295d8 (diff)
downloadandroid_packages_apps_Snap-eb45a40ee1e2c1f541dbfc9316a116c861a3bf7b.tar.gz
android_packages_apps_Snap-eb45a40ee1e2c1f541dbfc9316a116c861a3bf7b.tar.bz2
android_packages_apps_Snap-eb45a40ee1e2c1f541dbfc9316a116c861a3bf7b.zip
Improves swipe gesture
bug:7379463 - better timings - add original label - remove the gesture detector from ImageZoom (use the parent's one) Change-Id: Ib6879e471dfc21cb3a112aa36a61cd304516cf7f
Diffstat (limited to 'src/com/android/gallery3d/filtershow/imageshow/ImageShow.java')
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageShow.java78
1 files changed, 62 insertions, 16 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
index 6a81fcea8..73dc598b8 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
@@ -84,8 +84,16 @@ public class ImageShow extends View implements OnGestureListener,
private boolean mTouchShowOriginal = false;
private long mTouchShowOriginalDate = 0;
- private final long mTouchShowOriginalDelay = 1000; // 1s
+ private final long mTouchShowOriginalDelayMin = 200; // 200ms
+ private final long mTouchShowOriginalDelayMax = 300; // 300ms
private int mTouchDownX = 0;
+ private int mTouchDownY = 0;
+ protected float mTouchX = 0;
+ protected float mTouchY = 0;
+
+ private static int mOriginalTextMargin = 8;
+ private static int mOriginalTextSize = 26;
+ private static String mOriginalText = "Original";
protected GeometryMetadata getGeometry() {
return new GeometryMetadata(getImagePreset().mGeoData);
@@ -101,9 +109,6 @@ public class ImageShow extends View implements OnGestureListener,
private boolean mShowToast = false;
private boolean mImportantToast = false;
- protected float mTouchX = 0;
- protected float mTouchY = 0;
-
private SeekBar mSeekBar = null;
private PanelController mController = null;
@@ -121,6 +126,18 @@ public class ImageShow extends View implements OnGestureListener,
mTextPadding = value;
}
+ public static void setOriginalTextMargin(int value) {
+ mOriginalTextMargin = value;
+ }
+
+ public static void setOriginalTextSize(int value) {
+ mOriginalTextSize = value;
+ }
+
+ public static void setOriginalText(String text) {
+ mOriginalText = text;
+ }
+
private final Handler mHandler = new Handler();
public void select() {
@@ -404,18 +421,39 @@ public class ImageShow extends View implements OnGestureListener,
return;
canvas.save();
if (image != null) {
- int px = mTouchDownX - mImageBounds.left;
+ boolean goingDown = false;
+ if ((mTouchY - mTouchDownY) > (mTouchX - mTouchDownX)) {
+ goingDown = true;
+ }
+ int px = (int) (mTouchX - mImageBounds.left);
int py = mImageBounds.height();
+ if (goingDown) {
+ px = mImageBounds.width();
+ py = (int) (mTouchY - mImageBounds.top);
+ }
Rect d = new Rect(mImageBounds.left, mImageBounds.top,
mImageBounds.left + px, mImageBounds.top + py);
canvas.clipRect(d);
+ drawImage(canvas, image);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
- canvas.drawLine(px, mImageBounds.top, px, mImageBounds.bottom, paint);
+ if (goingDown) {
+ canvas.drawLine(mImageBounds.left, mTouchY - 1,
+ mImageBounds.right, mTouchY - 1, paint);
+ } else {
+ canvas.drawLine(mTouchX - 1, mImageBounds.top,
+ mTouchX - 1, mImageBounds.bottom, paint);
+ }
+ Rect bounds = new Rect();
+ paint.setTextSize(mOriginalTextSize);
+ paint.getTextBounds(mOriginalText, 0, mOriginalText.length(), bounds);
+ paint.setColor(Color.BLACK);
+ canvas.drawText(mOriginalText, mImageBounds.left + mOriginalTextMargin + 1,
+ mImageBounds.top + bounds.height() + mOriginalTextMargin + 1, paint);
paint.setColor(Color.WHITE);
- canvas.drawText("Original", mImageBounds.left, mImageBounds.top + 100, paint);
+ canvas.drawText(mOriginalText, mImageBounds.left + mOriginalTextMargin,
+ mImageBounds.top + bounds.height() + mOriginalTextMargin, paint);
}
- drawImage(canvas, image);
canvas.restore();
}
@@ -537,20 +575,27 @@ public class ImageShow extends View implements OnGestureListener,
mGestureDetector.onTouchEvent(event);
}
int ex = (int) event.getX();
+ int ey = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mTouchDownX = ex;
- if (!mActivity.isShowingHistoryPanel() && mImageBounds != null
- && mImageBounds.left < ex && mImageBounds.right > ex) {
- mTouchShowOriginal = true;
- mTouchShowOriginalDate = System.currentTimeMillis();
- }
+ mTouchDownY = ey;
+ mTouchShowOriginalDate = System.currentTimeMillis();
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
- mTouchDownX = ex;
+ mTouchX = ex;
+ mTouchY = ey;
+ if (!mActivity.isShowingHistoryPanel()
+ && (System.currentTimeMillis() - mTouchShowOriginalDate
+ > mTouchShowOriginalDelayMin)) {
+ mTouchShowOriginal = true;
+ }
}
if (event.getAction() == MotionEvent.ACTION_UP) {
mTouchShowOriginal = false;
mTouchDownX = 0;
+ mTouchDownY = 0;
+ mTouchX = 0;
+ mTouchY = 0;
}
invalidate();
return true;
@@ -656,8 +701,9 @@ public class ImageShow extends View implements OnGestureListener,
if ((!mActivity.isShowingHistoryPanel() && startEvent.getX() > endEvent.getX())
|| (mActivity.isShowingHistoryPanel() && endEvent.getX() > startEvent.getX())) {
if (!mTouchShowOriginal
- || (mTouchShowOriginal
- && System.currentTimeMillis() - mTouchShowOriginalDate < mTouchShowOriginalDelay)) {
+ || (mTouchShowOriginal &&
+ (System.currentTimeMillis() - mTouchShowOriginalDate
+ < mTouchShowOriginalDelayMax))) {
mActivity.toggleHistoryPanel();
}
}