From 40d21de8b6620d724f34bdc85af1dcb593d33fe0 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Thu, 12 May 2016 09:17:04 -0700 Subject: Use swipe gesture to switch between slides on Android BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1965013007 Review-Url: https://codereview.chromium.org/1965013007 --- .../main/java/org/skia/viewer/ViewerActivity.java | 43 +++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'platform_tools') 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 48cec39f48..e115de65b3 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); + } } -- cgit v1.2.3