Change recognition matchin in Home to immediate mode.

Instead of waiting for Xms after a finger up event to start the recognition process,
do it right away on a finger up event. This provides immediate feedback.
This commit is contained in:
Romain Guy
2009-06-11 13:07:43 -07:00
parent ae4f575911
commit 6fefcf1f83
2 changed files with 32 additions and 11 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
android:drawablePadding="12dip" android:drawablePadding="12dip"
android:paddingLeft="6dip" android:paddingLeft="6dip"
android:paddingRight="2dip" android:paddingRight="6dip"
android:ellipsize="marquee" android:ellipsize="marquee"
android:singleLine="true" android:singleLine="true"
+31 -10
View File
@@ -105,6 +105,8 @@ public final class Launcher extends Activity implements View.OnClickListener, On
private static final boolean DEBUG_USER_INTERFACE = false; private static final boolean DEBUG_USER_INTERFACE = false;
private static final boolean DEBUG_GESTURES = false; private static final boolean DEBUG_GESTURES = false;
private static final boolean CONFIG_GESTURES_IMMEDIATE_MODE = true;
private static final int WALLPAPER_SCREENS_SPAN = 2; private static final int WALLPAPER_SCREENS_SPAN = 2;
private static final int MENU_GROUP_ADD = 1; private static final int MENU_GROUP_ADD = 1;
@@ -585,7 +587,6 @@ public final class Launcher extends Activity implements View.OnClickListener, On
mGesturesProcessor = new GesturesProcessor(); mGesturesProcessor = new GesturesProcessor();
final GestureOverlayView overlay = mGesturesOverlay; final GestureOverlayView overlay = mGesturesOverlay;
overlay.setFadeOffset(GesturesConstants.MATCH_DELAY);
overlay.addOnGestureListener(mGesturesProcessor); overlay.addOnGestureListener(mGesturesProcessor);
overlay.getGesturePaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); overlay.getGesturePaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
} }
@@ -2350,8 +2351,11 @@ public final class Launcher extends Activity implements View.OnClickListener, On
} }
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) { public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
overlay.removeCallbacks(mMatcher); //noinspection PointlessBooleanExpression,ConstantConditions
resetGesturesNextPrompt(); if (!CONFIG_GESTURES_IMMEDIATE_MODE) {
overlay.removeCallbacks(mMatcher);
resetGesturesNextPrompt();
}
mGesturesAdd.setAlpha(128); mGesturesAdd.setAlpha(128);
mGesturesAdd.setEnabled(false); mGesturesAdd.setEnabled(false);
@@ -2364,13 +2368,22 @@ public final class Launcher extends Activity implements View.OnClickListener, On
} }
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) { public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
overlay.removeCallbacks(mMatcher); if (CONFIG_GESTURES_IMMEDIATE_MODE) {
mMatcher.gesture = overlay.getGesture();
mMatcher.gesture = overlay.getGesture(); if (mMatcher.gesture.getLength() < GesturesConstants.LENGTH_THRESHOLD) {
if (mMatcher.gesture.getLength() < GesturesConstants.LENGTH_THRESHOLD) { overlay.clear(false);
overlay.clear(false); } else {
mMatcher.run();
}
} else { } else {
overlay.postDelayed(mMatcher, GesturesConstants.MATCH_DELAY); overlay.removeCallbacks(mMatcher);
mMatcher.gesture = overlay.getGesture();
if (mMatcher.gesture.getLength() < GesturesConstants.LENGTH_THRESHOLD) {
overlay.clear(false);
} else {
overlay.postDelayed(mMatcher, GesturesConstants.MATCH_DELAY);
}
} }
} }
@@ -2407,12 +2420,20 @@ public final class Launcher extends Activity implements View.OnClickListener, On
} }
private void updatePrompt(ApplicationInfo info) { private void updatePrompt(ApplicationInfo info) {
if (mGesturesAction.intent != null &&
info.intent.toURI().equals(mGesturesAction.intent.toURI()) &&
info.title.equals(((TextView) mGesturesPrompt.getCurrentView()).getText())) {
return;
}
setGesturesNextPrompt(info.icon, info.title); setGesturesNextPrompt(info.icon, info.title);
mGesturesAction.intent = info.intent; mGesturesAction.intent = info.intent;
} }
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) { public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
overlay.removeCallbacks(mMatcher); //noinspection PointlessBooleanExpression,ConstantConditions
if (!CONFIG_GESTURES_IMMEDIATE_MODE) {
overlay.removeCallbacks(mMatcher);
}
} }
void addGesture(String name, Gesture gesture) { void addGesture(String name, Gesture gesture) {