improve show/hide menu on HD screen
authorDralagen <dralagen@dralagen.fr>
Sun, 12 Apr 2015 11:15:08 +0000 (13:15 +0200)
committerDralagen <dralagen@dralagen.fr>
Sun, 12 Apr 2015 11:15:08 +0000 (13:15 +0200)
app/src/main/java/org/alma/rotoscope/DrawingActivity.java
app/src/main/res/layout/activity_drawing.xml

index 8873ef3..050bfd5 100644 (file)
@@ -47,6 +47,7 @@ public class DrawingActivity extends Activity implements View.OnTouchListener {
   private static final String TAG = "DrawingActivity";
 
   private static final Handler handler = new Handler();
+  private static final float TOUCH_TOLERANCE = 4;
 
   /**
    * fps of original video
@@ -107,6 +108,14 @@ public class DrawingActivity extends Activity implements View.OnTouchListener {
    * true if you don't have MotionEvent.ACTION_MOVE
    */
   private boolean shortPress;
+  /**
+   * start position X of finger when start touch
+   */
+  private float touchX;
+  /**
+   * start position X of finger when start touch
+   */
+  private float touchY;
 
   /**
    * File output of result video
@@ -257,9 +266,30 @@ public class DrawingActivity extends Activity implements View.OnTouchListener {
         public void onClick(DialogInterface dialog, int which) {
         }
       });
+
+      showMenu();
     }
   }
 
+  private void showMenu () {
+    final View menu = findViewById(R.id.MenuLayout);
+    fade(menu, true);
+
+    final View nav = findViewById(R.id.navigationLayout);
+    fade(nav, true);
+
+    Log.v(TAG, "Menu visible");
+
+    runHideMenu = new Runnable() {
+      @Override
+      public void run() {
+        fade(menu, false);
+        fade(nav, false);
+        Log.v(TAG, "Menu invisible");
+      }
+    };
+  }
+
   /**
    * Select the currentPicture into layers and the good frame form the input video,
    * and pass all at the DrawingArea and use them to drawing into current picture and show good frame.
@@ -653,11 +683,11 @@ public class DrawingActivity extends Activity implements View.OnTouchListener {
   public boolean onTouch(View v, MotionEvent event) {
     switch (event.getAction()) {
       case  MotionEvent.ACTION_DOWN:
-        onTouchDown();
+        onTouchDown(event.getX(), event.getY());
         break;
 
       case MotionEvent.ACTION_MOVE:
-        onTouchMove();
+        onTouchMove(event.getX(), event.getY());
         break;
 
       case MotionEvent.ACTION_UP:
@@ -666,36 +696,26 @@ public class DrawingActivity extends Activity implements View.OnTouchListener {
     return false;
   }
 
-  private void onTouchDown() {
+  private void onTouchDown (float x, float y) {
     shortPress = true;
+    touchX = x;
+    touchY = y;
   }
 
-  private void onTouchMove() {
-    shortPress = false;
-    handler.removeCallbacks(runHideMenu);
-    handler.post(runHideMenu);
-    runHideMenu = null;
+  private void onTouchMove (float x, float y) {
+    float dx = Math.abs(x - touchX);
+    float dy = Math.abs(y - touchY);
+    if (shortPress && (dx > TOUCH_TOLERANCE || dy > TOUCH_TOLERANCE)) {
+      shortPress = false;
+      handler.removeCallbacks(runHideMenu);
+      handler.post(runHideMenu);
+      runHideMenu = null;
+    }
   }
 
   private void onTouchUp() {
     if (shortPress) {
-
-      final View menu = findViewById(R.id.MenuLayout);
-      fade(menu, true);
-
-      final View nav = findViewById(R.id.navigationLayout);
-      fade(nav, true);
-
-      Log.v(TAG, "Menu visible");
-
-      runHideMenu = new Runnable() {
-        @Override
-        public void run() {
-          fade(menu, false);
-          fade(nav, false);
-          Log.v(TAG, "Menu invisible");
-        }
-      };
+      showMenu();
     }
   }
 
index 3f80c51..61fed36 100644 (file)
@@ -9,7 +9,7 @@
   <RelativeLayout android:layout_width="fill_parent" android:layout_height="25pt"
                   android:layout_gravity="center_vertical|bottom"
                   android:orientation="horizontal" android:id="@+id/navigationLayout"
-                  android:animateLayoutChanges="true" android:layout_alignParentBottom="true"
+                  android:layout_alignParentBottom="true"
                   android:layout_alignParentStart="true">
     <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent"
             android:id="@+id/PreviousButton" android:layout_alignParentTop="true" android:layout_marginTop="0dp"
@@ -32,7 +32,7 @@
   </RelativeLayout>
   <LinearLayout
       android:orientation="vertical"
-      android:layout_width="wrap_content" android:animateLayoutChanges="true"
+      android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:id="@+id/MenuLayout" android:layout_alignParentLeft="false"
       android:layout_alignParentTop="true" android:layout_alignParentRight="true">
     <ImageView