OSDN Git Service

Adjust bottom control button positions.
authorAngus Kong <shkong@google.com>
Sat, 18 Jan 2014 09:44:10 +0000 (01:44 -0800)
committerAngus Kong <shkong@google.com>
Tue, 21 Jan 2014 23:45:16 +0000 (15:45 -0800)
bug:12138517

Change-Id: Ife7511e232ba9f02ac83800df129fafaf65c0f46

res/layout/filmstrip_bottom_controls.xml
res/values/dimens.xml
res/values/styles.xml
src/com/android/camera/app/FilmstripBottomControls.java

index d859242..a5dde05 100644 (file)
     <!-- A filler view -->
     <View
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="1dp"
         android:layout_weight="1"
         android:visibility="invisible" />
 
-    <FrameLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
+    <ImageButton
+        android:id="@+id/filmstrip_bottom_control_share"
+        style="@style/FilmstripBottomControlButton"
+        android:src="@drawable/ic_menu_share_holo_light"
+        android:visibility="invisible" />
 
-        <ImageButton
-            android:id="@+id/filmstrip_bottom_control_view"
-            style="@style/FilmstripBottomControlButton"
-            android:layout_gravity="center"
-            android:src="@drawable/ic_view_photosphere"
+    <LinearLayout
+        android:layout_width="144dp"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:visibility="visible">
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
             android:visibility="invisible" />
 
-        <ImageButton
-            android:id="@+id/filmstrip_bottom_control_tiny_planet"
-            style="@style/FilmstripBottomControlButton"
-            android:layout_gravity="center"
-            android:src="@drawable/ic_menu_tiny_planet"
+        <FrameLayout
+            android:id="@+id/filmstrip_bottom_control_viewer_wrapper"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="gone">
+
+            <ImageButton
+                android:id="@+id/filmstrip_bottom_control_view"
+                style="@style/FilmstripBottomControlButton"
+                android:layout_gravity="center"
+                android:src="@drawable/ic_view_photosphere"
+                android:visibility="gone" />
+
+            <ImageButton
+                android:id="@+id/filmstrip_bottom_control_tiny_planet"
+                style="@style/FilmstripBottomControlButton"
+                android:layout_gravity="center"
+                android:src="@drawable/ic_menu_tiny_planet"
+                android:visibility="gone" />
+        </FrameLayout>
+
+        <View
+            android:id="@+id/filmstrip_bottom_control_middle_filler"
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
             android:visibility="invisible" />
-    </FrameLayout>
 
-    <ImageButton
-        android:id="@+id/filmstrip_bottom_control_edit"
-        style="@style/FilmstripBottomControlButton"
-        android:src="@drawable/ic_menu_edit_holo_dark"
-        android:visibility="invisible" />
+        <ImageButton
+            android:id="@+id/filmstrip_bottom_control_edit"
+            style="@style/FilmstripBottomControlButton"
+            android:src="@drawable/ic_menu_edit_holo_dark"
+            android:visibility="gone" />
 
+        <View
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
+            android:visibility="invisible" />
 
-    <ImageButton
-        android:id="@+id/filmstrip_bottom_control_share"
-        style="@style/FilmstripBottomControlButton"
-        android:src="@drawable/ic_menu_share_holo_light"
-        android:visibility="invisible" />
+    </LinearLayout>
 
     <ImageButton
         android:id="@+id/filmstrip_bottom_control_delete"
     <!-- A filler view -->
     <View
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="1dp"
         android:layout_weight="1"
         android:visibility="invisible" />
 
index 99b9152..fff0349 100644 (file)
 
     <!-- Filmstrip bottom controls -->
     <dimen name="filmstrip_bottom_control_size">48dp</dimen>
-    <dimen name="filmstrip_bottom_control_spacing">8dp</dimen>
+    <dimen name="filmstrip_bottom_control_spacing">16dp</dimen>
 
     <!-- Bottom bar ui -->
     <dimen name="bottom_bar_height_min">80dp</dimen>
index 3f732c5..e94ceef 100644 (file)
         <item name="android:alpha">1.0</item>
     </style>
     <style name="FilmstripBottomControlButton">
-        <item name="android:layout_margin">@dimen/filmstrip_bottom_control_spacing</item>
         <item name="android:layout_width">@dimen/filmstrip_bottom_control_size</item>
         <item name="android:layout_height">@dimen/filmstrip_bottom_control_size</item>
         <item name="android:background">@drawable/transparent_button_background</item>
index 400139a..2c09592 100644 (file)
@@ -32,12 +32,15 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
     private ViewGroup mLayout;
     private ImageButton mEditButton;
     private ImageButton mViewButton;
+    private View  mViewerWrapperLayout;
     private ImageButton mTinyPlanetButton;
     private ImageButton mDeleteButton;
     private ImageButton mShareButton;
+    private View mMiddleFiller;
 
     public FilmstripBottomControls(ViewGroup bottomControlsLayout) {
         mLayout = bottomControlsLayout;
+        mMiddleFiller = mLayout.findViewById(R.id.filmstrip_bottom_control_middle_filler);
         setupEditButton();
         setupViewButton();
         setupTinyPlanetButton();
@@ -61,7 +64,8 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
 
     @Override
     public void setEditButtonVisibility(boolean visible) {
-        setVisibility(mEditButton, visible);
+        mEditButton.setVisibility(visible ? View.VISIBLE : View.GONE);
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -72,12 +76,12 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
     @Override
     public void setViewerButtonVisibility(int state) {
         if (state == VIEWER_NONE) {
-            setVisibility(mViewButton, false);
-            return;
+            mViewButton.setVisibility(View.GONE);
+        } else {
+            mViewButton.setImageResource(getViewButtonResource(state));
+            mViewButton.setVisibility(View.VISIBLE);
         }
-        mViewButton.setImageResource(getViewButtonResource(state));
-        setVisibility(mViewButton, true);
-
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -87,7 +91,8 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
 
     @Override
     public void setTinyPlanetButtonVisibility(final boolean visible) {
-        setVisibility(mTinyPlanetButton, visible);
+        mTinyPlanetButton.setVisibility(visible ? View.VISIBLE : View.GONE);
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -97,7 +102,7 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
 
     @Override
     public void setDeleteButtonVisibility(boolean visible) {
-        setVisibility(mDeleteButton, visible);
+        mDeleteButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
     }
 
     @Override
@@ -107,7 +112,7 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
 
     @Override
     public void setShareButtonVisibility(boolean visible) {
-        setVisibility(mShareButton, visible);
+        mShareButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
     }
 
     @Override
@@ -115,13 +120,6 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
         mShareButton.setEnabled(enabled);
     }
 
-    /**
-     * Sets the visibility of the given view.
-     */
-    private static void setVisibility(final View view, final boolean visible) {
-        view.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
-    }
-
     private int getViewButtonResource(int state) {
         switch (state) {
             case VIEWER_REFOCUS:
@@ -146,6 +144,7 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
     }
 
     private void setupViewButton() {
+        mViewerWrapperLayout = mLayout.findViewById(R.id.filmstrip_bottom_control_viewer_wrapper);
         mViewButton = (ImageButton) mLayout.findViewById(R.id.filmstrip_bottom_control_view);
         mViewButton.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -193,4 +192,28 @@ class FilmstripBottomControls implements CameraAppUI.BottomControls {
             }
         });
     }
+
+    /**
+     * Updates the visibility of the middle filler view in the center and the
+     * visibility of wrapper layout of viewer buttons and the tinyplanet button.
+     * The middle filler view should be visible when edit button and viewer
+     * buttons are both visible. The wrapper layout of viewer buttons and
+     * tinyplanet should be gone if no viewer button is shown and the
+     * tinyplanet button is invisible.
+     */
+    private void updateMiddleFillerLayoutVisibility() {
+        if (mViewButton.getVisibility() == View.VISIBLE ||
+                mTinyPlanetButton.getVisibility() == View.VISIBLE) {
+            mViewerWrapperLayout.setVisibility(View.VISIBLE);
+        } else {
+            mViewerWrapperLayout.setVisibility(View.GONE);
+        }
+
+        if (mEditButton.getVisibility() == View.VISIBLE &&
+                mViewerWrapperLayout.getVisibility() == View.VISIBLE) {
+            mMiddleFiller.setVisibility(View.INVISIBLE);
+        } else {
+            mMiddleFiller.setVisibility(View.GONE);
+        }
+    }
 }