Index: platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerActivity.java |
diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerActivity.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerActivity.java |
index 48cec39f483d658970297cc17813b460b75dc53b..e115de65b32bed8113f80de5b0f471b618753a70 100644 |
--- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerActivity.java |
+++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerActivity.java |
@@ -9,17 +9,50 @@ package org.skia.viewer; |
import android.app.Activity; |
import android.os.Bundle; |
+import android.util.Log; |
+import android.view.GestureDetector; |
+import android.view.KeyEvent; |
+import android.view.MotionEvent; |
import android.view.Surface; |
import android.view.SurfaceHolder; |
import android.view.SurfaceView; |
+import android.view.View; |
+ |
+public class ViewerActivity |
+ extends Activity implements SurfaceHolder.Callback, View.OnTouchListener { |
+ private static final float FLING_VELOCITY_THRESHOLD = 1000; |
-public class ViewerActivity extends Activity implements SurfaceHolder.Callback { |
private SurfaceView mView; |
private ViewerApplication mApplication; |
+ private GestureDetector mGestureDetector; |
private native void onSurfaceCreated(long handle, Surface surface); |
private native void onSurfaceChanged(long handle, Surface surface); |
private native void onSurfaceDestroyed(long handle); |
+ private native void onKeyPressed(long handle, int keycode); |
+ |
+ private class GestureListener extends GestureDetector.SimpleOnGestureListener { |
+ @Override |
+ public boolean onDown(MotionEvent e) { |
+ return true; |
+ } |
+ |
+ @Override |
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { |
+ if (Math.abs(velocityX) > Math.abs(velocityY) |
+ && Math.abs(velocityX) > FLING_VELOCITY_THRESHOLD) { |
+ if (velocityX > 0) { |
+ // Fling right |
+ onKeyPressed(mApplication.getNativeHandle(), KeyEvent.KEYCODE_SOFT_RIGHT); |
+ } else { |
+ // Fling left |
+ onKeyPressed(mApplication.getNativeHandle(), KeyEvent.KEYCODE_SOFT_LEFT); |
+ } |
+ return true; |
+ } |
+ return false; |
+ } |
+ } |
@Override |
protected void onCreate(Bundle savedInstanceState) { |
@@ -29,6 +62,9 @@ public class ViewerActivity extends Activity implements SurfaceHolder.Callback { |
mApplication = (ViewerApplication) getApplication(); |
mView = (SurfaceView) findViewById(R.id.surfaceView); |
mView.getHolder().addCallback(this); |
+ |
+ mGestureDetector = new GestureDetector(getApplicationContext(), new GestureListener()); |
+ mView.setOnTouchListener(this); |
} |
@Override |
@@ -51,4 +87,9 @@ public class ViewerActivity extends Activity implements SurfaceHolder.Callback { |
onSurfaceDestroyed(mApplication.getNativeHandle()); |
} |
} |
+ |
+ @Override |
+ public boolean onTouch(View v, MotionEvent event) { |
+ return mGestureDetector.onTouchEvent(event); |
+ } |
} |