Issue 3875: Add more debugging lines to figure out what might be wrong with the new swipe algorithm.
Fix some variable names.
This commit is contained in:
parent
81f0cb510a
commit
fc5ea05e48
1 changed files with 35 additions and 7 deletions
|
@ -7,6 +7,7 @@ import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
import android.view.GestureDetector.SimpleOnGestureListener;
|
import android.view.GestureDetector.SimpleOnGestureListener;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
|
@ -164,21 +165,48 @@ public class K9Activity extends Activity {
|
||||||
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
|
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
|
||||||
// Do fling-detection if gestures are force-enabled or we have system-wide gestures enabled.
|
// Do fling-detection if gestures are force-enabled or we have system-wide gestures enabled.
|
||||||
if (gesturesEnabled || K9.gesturesEnabled()) {
|
if (gesturesEnabled || K9.gesturesEnabled()) {
|
||||||
// Convert the dips to pixels
|
// Calculate the minimum distance required for this to count as a swipe.
|
||||||
|
// Convert the constant dips to pixels.
|
||||||
final float mGestureScale = getResources().getDisplayMetrics().density;
|
final float mGestureScale = getResources().getDisplayMetrics().density;
|
||||||
int min_distance = (int)(SWIPE_MIN_DISTANCE_DIP * mGestureScale + 0.5f);
|
final int minDistance = (int)(SWIPE_MIN_DISTANCE_DIP * mGestureScale + 0.5f);
|
||||||
int min_velocity = (int)(SWIPE_THRESHOLD_VELOCITY_DIP * mGestureScale + 0.5f);
|
final int minVelocity = (int)(SWIPE_THRESHOLD_VELOCITY_DIP * mGestureScale + 0.5f);
|
||||||
int max_off_path = (int)(SWIPE_MAX_OFF_PATH_DIP * mGestureScale + 0.5f);
|
final int maxOffPath = (int)(SWIPE_MAX_OFF_PATH_DIP * mGestureScale + 0.5f);
|
||||||
|
|
||||||
|
// Calculate how much was actually swiped.
|
||||||
|
final float deltaX = e2.getX() - e1.getX();
|
||||||
|
final float deltaY = e2.getY() - e1.getY();
|
||||||
|
|
||||||
|
final boolean movedAcross = (Math.abs(deltaX) > Math.abs(deltaY * 4));
|
||||||
|
final boolean steadyHand = (Math.abs(deltaX / deltaY) > 2);
|
||||||
|
if(K9.DEBUG) {
|
||||||
|
Log.d(K9.LOG_TAG, "Old swipe algorithm: movedAcross=" + movedAcross + " steadyHand=" + steadyHand + " result=" + (movedAcross && steadyHand));
|
||||||
|
Log.d(K9.LOG_TAG, String.format("New swipe algorithm: deltaX=%.2f deltaY=%.2f velocity=%.2f (min=%d)", deltaX, deltaY, velocityX, minVelocity));
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (Math.abs(e1.getY() - e2.getY()) > max_off_path)
|
if (Math.abs(deltaY) > maxOffPath) {
|
||||||
|
if(K9.DEBUG)
|
||||||
|
Log.d(K9.LOG_TAG, "New swipe algorithm: Swipe too far off horizontal path.");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
if(Math.abs(velocityX) < minVelocity) {
|
||||||
|
if(K9.DEBUG)
|
||||||
|
Log.d(K9.LOG_TAG, "New swipe algorithm: Swipe too slow.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// right to left swipe
|
// right to left swipe
|
||||||
if (e1.getX() - e2.getX() > min_distance && Math.abs(velocityX) > min_velocity) {
|
if (deltaX < minDistance) {
|
||||||
onSwipeRightToLeft(e1, e2);
|
onSwipeRightToLeft(e1, e2);
|
||||||
} else if (e2.getX() - e1.getX() > min_distance && Math.abs(velocityX) > min_velocity) {
|
if(K9.DEBUG)
|
||||||
|
Log.d(K9.LOG_TAG, "New swipe algorithm: Right to Left swipe OK.");
|
||||||
|
} else if (deltaX > minDistance) {
|
||||||
onSwipeLeftToRight(e1, e2);
|
onSwipeLeftToRight(e1, e2);
|
||||||
|
if(K9.DEBUG)
|
||||||
|
Log.d(K9.LOG_TAG, "New swipe algorithm: Left to Right swipe OK.");
|
||||||
|
} else {
|
||||||
|
if(K9.DEBUG)
|
||||||
|
Log.d(K9.LOG_TAG, "New swipe algorithm: Swipe did not meet minimum distance requirements.");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// nothing
|
// nothing
|
||||||
|
|
Loading…
Reference in a new issue