disable startup shimmy on sd card error

bug: 15841887

Change-Id: If1cbb463a9de916b9fdd2926d8b47db04934535c
diff --git a/src/com/android/camera/app/CameraAppUI.java b/src/com/android/camera/app/CameraAppUI.java
index 962a253..ac77af7 100644
--- a/src/com/android/camera/app/CameraAppUI.java
+++ b/src/com/android/camera/app/CameraAppUI.java
@@ -1025,7 +1025,9 @@
             @Override
             public void run() {
                 mModeTransitionView.hideModeCover(null);
-                showShimmyDelayed();
+                if (!mDisableAllUserInteractions) {
+                    showShimmyDelayed();
+                }
             }
         };
         mModeCoverState = COVER_SHOWN;
@@ -1402,6 +1404,7 @@
             disableModeOptions();
             setShutterButtonEnabled(false);
             setSwipeEnabled(false);
+            mModeListView.hideAnimated();
         } else {
             enableModeOptions();
             setShutterButtonEnabled(true);
diff --git a/src/com/android/camera/ui/ModeListView.java b/src/com/android/camera/ui/ModeListView.java
index 63901db..98c0c2e 100644
--- a/src/com/android/camera/ui/ModeListView.java
+++ b/src/com/android/camera/ui/ModeListView.java
@@ -276,6 +276,15 @@
             // Do nothing.
         }
 
+        /**
+         * Hide the mode drawer (with animation, if supported)
+         * and switch to fully hidden state.
+         * Default is to simply call {@link #hide()}.
+         */
+        public void hideAnimated() {
+            hide();
+        }
+
         /***************GestureListener implementation*****************/
         @Override
         public boolean onDown(MotionEvent e) {
@@ -742,6 +751,16 @@
             mCurrentStateManager.setCurrentState(new FullyHiddenState());
         }
 
+        @Override
+        public void hideAnimated() {
+            cancelAnimation();
+            animateListToWidth(0).addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mCurrentStateManager.setCurrentState(new FullyHiddenState());
+                }
+            });
+        }
     }
 
     /**
@@ -1440,6 +1459,20 @@
     }
 
     /**
+     * Hide the mode list immediately (provided the current state allows it).
+     */
+    public void hide() {
+        mCurrentStateManager.getCurrentState().hide();
+    }
+
+    /**
+     * Hide the mode list with an animation.
+     */
+    public void hideAnimated() {
+        mCurrentStateManager.getCurrentState().hideAnimated();
+    }
+
+    /**
      * Resets the visible width of all the mode selectors to 0.
      */
     private void resetModeSelectors() {