summaryrefslogtreecommitdiffstats
path: root/src/com/android/dreams/phototable/EdgeSwipeDetector.java
diff options
context:
space:
mode:
authorChris Wren <cwren@android.com>2013-03-15 17:19:49 -0400
committerChris Wren <cwren@android.com>2013-03-15 17:19:49 -0400
commitbf44ca22d40dd60b4c30f6a979b80fbd2ffa0078 (patch)
tree0f6ea7c975550bc80c90c91b431d061e469774be /src/com/android/dreams/phototable/EdgeSwipeDetector.java
parenteb70217554d14807d73cae033b4f756c9b80fe3b (diff)
downloadandroid_packages_screensavers_PhotoTable-bf44ca22d40dd60b4c30f6a979b80fbd2ffa0078.tar.gz
android_packages_screensavers_PhotoTable-bf44ca22d40dd60b4c30f6a979b80fbd2ffa0078.tar.bz2
android_packages_screensavers_PhotoTable-bf44ca22d40dd60b4c30f6a979b80fbd2ffa0078.zip
add swipe-away gesture, and fix focus blink.
Bug: 8387448 Change-Id: I316d21069e0b81f1753c975a67f56f95282c2a8a
Diffstat (limited to 'src/com/android/dreams/phototable/EdgeSwipeDetector.java')
-rw-r--r--src/com/android/dreams/phototable/EdgeSwipeDetector.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/com/android/dreams/phototable/EdgeSwipeDetector.java b/src/com/android/dreams/phototable/EdgeSwipeDetector.java
new file mode 100644
index 0000000..98ad6c6
--- /dev/null
+++ b/src/com/android/dreams/phototable/EdgeSwipeDetector.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dreams.phototable;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.view.MotionEvent;
+
+/**
+ * Detect and dispatch edge events.
+ */
+public class EdgeSwipeDetector {
+ private static final String TAG = "EdgeSwipeDetector";
+ private float mEdgeSwipeGutter;
+ private float mEdgeSwipeThreshold;
+ private boolean mEdgeSwipe;
+
+ private final PhotoTable mTable;
+
+ public EdgeSwipeDetector(Context context, PhotoTable table) {
+ mTable = table;
+ final Resources resources = context.getResources();
+ mEdgeSwipeGutter = resources.getInteger(R.integer.table_edge_swipe_gutter) / 1000000f;
+ mEdgeSwipeThreshold = resources.getInteger(R.integer.table_edge_swipe_threshold) / 1000000f;
+ }
+
+ public boolean onTouchEvent(MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ float edgeGutter = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax()
+ * mEdgeSwipeGutter;
+ if (event.getX() < edgeGutter) {
+ mEdgeSwipe = true;
+ return true;
+ }
+ break;
+
+ case MotionEvent.ACTION_MOVE:
+ if (mEdgeSwipe) {
+ return true;
+ }
+ break;
+
+ case MotionEvent.ACTION_UP:
+ if (mEdgeSwipe) {
+ mEdgeSwipe = false;
+ float enough = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax()
+ * mEdgeSwipeThreshold;
+ if (event.getX() > enough) {
+ if (mTable.hasFocus()) {
+ mTable.fling(mTable.getFocused());
+ } else if (mTable.hasSelection()) {
+ mTable.clearSelection();
+ }
+ }
+ return true;
+ }
+ break;
+ }
+ return false;
+ }
+}