OSDN Git Service

Add some more ways to dismiss popup window(UX change).
authorOwen Lin <owenlin@google.com>
Thu, 25 Mar 2010 07:36:26 +0000 (15:36 +0800)
committerOwen Lin <owenlin@google.com>
Tue, 30 Mar 2010 07:54:51 +0000 (15:54 +0800)
Bug: 2538066
Change-Id: Ieb5b28500363ff5cc88b508329c84c35ebc5b230

src/com/android/camera/Camera.java
src/com/android/camera/VideoCamera.java
src/com/android/camera/ui/IndicatorBar.java

index 3296912..2ab4d24 100644 (file)
@@ -1398,8 +1398,9 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
         if (!isCameraIdle()) {
             // ignore backs while we're taking a picture
             return;
+        } else if (mHeadUpDisplay == null || !mHeadUpDisplay.collapse()) {
+            super.onBackPressed();
         }
-        super.onBackPressed();
     }
 
     @Override
index 411386a..dbe5b7a 100644 (file)
@@ -684,9 +684,9 @@ public class VideoCamera extends NoSearchActivity
         if (mPausing) return;
         if (mMediaRecorderRecording) {
             onStopVideoRecording(false);
-            return;
+        } else if (mHeadUpDisplay == null || !mHeadUpDisplay.collapse()) {
+            super.onBackPressed();
         }
-        super.onBackPressed();
     }
 
     @Override
index 0d51f97..28c4eab 100644 (file)
@@ -18,6 +18,8 @@ public class IndicatorBar extends GLView {
     private OnItemSelectedListener mSelectedListener;
     private boolean mActivated = false;
 
+    private boolean mSelectionChanged = false;
+
     private class Background extends GLView {
         @Override
         protected void render(GLRootView root, GL11 gl) {
@@ -111,6 +113,7 @@ public class IndicatorBar extends GLView {
 
     private void setSelectedItem(GLView view, int index) {
         if (index == mSelectedIndex) return;
+        mSelectionChanged = true;
         mSelectedIndex = index;
         if (mSelectedListener != null) {
             if (index == INDEX_NONE) {
@@ -156,6 +159,7 @@ public class IndicatorBar extends GLView {
         int y = (int) event.getY();
         switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN:
+                mSelectionChanged = false;
                 setActivated(true);
             case MotionEvent.ACTION_MOVE:
                 for (int i = 1, n = getComponentCount(); i < n; ++i) {
@@ -166,6 +170,11 @@ public class IndicatorBar extends GLView {
                     }
                 }
                 setSelectedItem(null, INDEX_NONE);
+                break;
+            case MotionEvent.ACTION_UP:
+                if (mSelectionChanged == false) {
+                    setSelectedItem(null, INDEX_NONE);
+                }
         }
         return true;
     }