Tweaking spacing and layout of AllApps/Customize in portrait.

- Also added workaround for tab label not being initially selected
- Added fix for initial layout of PagedViews preventing side pages from having proper alpha
- Marking widget dims format string as not translatable

Change-Id: I74a5410b88e2766816a87b14e64058b4288c214d
diff --git a/res/layout-xlarge-land/all_apps_tabbed.xml b/res/layout-xlarge-land/all_apps_tabbed.xml
index 4f573f8..3a07b95 100644
--- a/res/layout-xlarge-land/all_apps_tabbed.xml
+++ b/res/layout-xlarge-land/all_apps_tabbed.xml
@@ -16,7 +16,6 @@
 <com.android.launcher2.AllAppsTabbed
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-    android:background="#30000000"
     android:paddingTop="?android:attr/actionBarSize">
     <LinearLayout
         android:orientation="vertical"
diff --git a/res/layout-xlarge-land/customization_drawer.xml b/res/layout-xlarge-land/customization_drawer.xml
index 7ad9132..8c60e68 100644
--- a/res/layout-xlarge-land/customization_drawer.xml
+++ b/res/layout-xlarge-land/customization_drawer.xml
@@ -23,6 +23,6 @@
     launcher:cellCountX="7"
     launcher:cellCountY="4"
     launcher:pageLayoutPaddingTop="10dp"
-    launcher:pageLayoutPaddingBottom="15dp"
+    launcher:pageLayoutPaddingBottom="25dp"
     launcher:pageLayoutPaddingLeft="20dp"
     launcher:pageLayoutPaddingRight="20dp" />
\ No newline at end of file
diff --git a/res/layout-xlarge/launcher.xml b/res/layout-xlarge-land/launcher.xml
similarity index 100%
rename from res/layout-xlarge/launcher.xml
rename to res/layout-xlarge-land/launcher.xml
diff --git a/res/layout-xlarge-port/all_apps_tabbed.xml b/res/layout-xlarge-port/all_apps_tabbed.xml
index 2ff0447..6675adc 100644
--- a/res/layout-xlarge-port/all_apps_tabbed.xml
+++ b/res/layout-xlarge-port/all_apps_tabbed.xml
@@ -16,7 +16,6 @@
 <com.android.launcher2.AllAppsTabbed
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-    android:background="#30000000"
     android:paddingTop="?android:attr/actionBarSize">
     <LinearLayout
         android:orientation="vertical"
@@ -37,8 +36,8 @@
                 android:id="@+id/all_apps_paged_view"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                launcher:cellCountX="7"
-                launcher:cellCountY="4"
+                launcher:cellCountX="5"
+                launcher:cellCountY="7"
                 launcher:pageLayoutPaddingTop="10dp"
                 launcher:pageLayoutPaddingBottom="10dp"
                 launcher:pageLayoutPaddingLeft="0dp"
diff --git a/res/layout-xlarge-port/customization_drawer.xml b/res/layout-xlarge-port/customization_drawer.xml
index db264b2..20c207f 100644
--- a/res/layout-xlarge-port/customization_drawer.xml
+++ b/res/layout-xlarge-port/customization_drawer.xml
@@ -20,9 +20,9 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     launcher:widgetCellCountX="12"
-    launcher:cellCountX="7"
+    launcher:cellCountX="5"
     launcher:cellCountY="4"
-    launcher:pageLayoutPaddingTop="10dp"
-    launcher:pageLayoutPaddingBottom="15dp"
+    launcher:pageLayoutPaddingTop="15dp"
+    launcher:pageLayoutPaddingBottom="25dp"
     launcher:pageLayoutPaddingLeft="0dp"
     launcher:pageLayoutPaddingRight="0dp" />
\ No newline at end of file
diff --git a/res/layout-xlarge-port/launcher.xml b/res/layout-xlarge-port/launcher.xml
new file mode 100644
index 0000000..a418b36
--- /dev/null
+++ b/res/layout-xlarge-port/launcher.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<com.android.launcher2.DragLayer
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
+
+    android:id="@+id/drag_layer"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include
+        layout="@layout/all_apps_tabbed"
+        android:id="@+id/all_apps_view"
+        android:layout_width="match_parent"
+        android:layout_height="1000dip"
+        android:layout_gravity="top"/>
+
+    <!-- The workspace contains 5 screens of cells -->
+    <com.android.launcher2.Workspace
+        android:id="@+id/workspace"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingTop="?android:attr/actionBarSize"
+        launcher:defaultScreen="2"
+        launcher:cellCountX="8"
+        launcher:cellCountY="7"
+        launcher:pageSpacing="64dip">
+
+        <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
+        <include android:id="@+id/cell2" layout="@layout/workspace_screen" />
+        <include android:id="@+id/cell3" layout="@layout/workspace_screen" />
+        <include android:id="@+id/cell4" layout="@layout/workspace_screen" />
+        <include android:id="@+id/cell5" layout="@layout/workspace_screen" />
+    </com.android.launcher2.Workspace>
+
+    <RelativeLayout
+        android:id="@+id/all_apps_button_cluster"
+        android:layout_width="fill_parent"
+        android:layout_height="?android:attr/actionBarSize"
+        android:layout_gravity="top">
+
+        <ImageView
+            android:id="@+id/search_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_gravity="left"
+            android:layout_marginLeft="@dimen/toolbar_button_spacing"
+
+            android:onClick="onClickSearchButton"
+            android:focusable="true"
+            android:clickable="true"/>
+
+        <ImageView
+            android:id="@+id/configure_button"
+            android:src="@drawable/configure_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentRight="true"
+            android:layout_marginLeft="@dimen/toolbar_button_spacing"
+            android:layout_marginRight="@dimen/toolbar_button_spacing"
+
+            android:onClick="onClickConfigureButton"
+            android:focusable="true"
+            android:clickable="true" />
+
+        <TextView
+            android:id="@+id/all_apps_button"
+            android:text="@string/all_apps_button_label"
+            android:background="@drawable/all_apps_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_toLeftOf="@id/configure_button"
+            android:layout_marginLeft="@dimen/toolbar_button_spacing"
+            android:layout_marginRight="@dimen/toolbar_button_spacing"
+            android:textSize="18dip"
+
+            android:onClick="onClickAllAppsButton"
+            android:focusable="true"
+            android:clickable="true" />
+
+        <!-- The button to bring up the installed app market.
+             The icon for this button will be dynamically set. -->
+        <ImageView
+            android:id="@+id/market_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignLeft="@id/all_apps_button"
+
+            android:onClick="onClickAppMarketButton"
+            android:focusable="false"
+            android:clickable="false"
+            android:visibility="gone"/>
+
+        <com.android.launcher2.DeleteZone
+            android:id="@+id/delete_zone"
+            android:src="@drawable/delete_zone_selector"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignLeft="@id/all_apps_button"
+
+            android:visibility="gone"
+            launcher:direction="horizontal" />
+
+        <com.android.launcher2.ApplicationInfoDropTarget
+            android:id="@+id/info_button"
+            android:src="@drawable/info_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignLeft="@id/configure_button"
+
+            android:visibility="gone"
+            android:focusable="true"
+            android:clickable="true" />
+
+    </RelativeLayout>
+
+    <TabHost
+        android:id="@android:id/tabhost"
+        android:layout_width="match_parent"
+        android:layout_height="550dip"
+        android:layout_gravity="bottom">
+        <LinearLayout
+            android:orientation="vertical"
+            android:background="#40000000"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+            <TabWidget
+                android:id="@android:id/tabs"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:tabStripEnabled="false"
+                android:paddingBottom="10dp" />
+            <FrameLayout
+                android:id="@android:id/tabcontent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+             </FrameLayout>
+          </LinearLayout>
+    </TabHost>
+</com.android.launcher2.DragLayer>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index bcb7e9a..4f74b59 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -69,7 +69,7 @@
 
     <!-- Customization Drawer -->
     <!-- The format string for the dimensions of a widget in the drawer -->
-    <string name="widget_dims_format">%1$d x %2$d</string>
+    <string name="widget_dims_format" translatable="false">%1$d x %2$d</string>
 
     <!-- Folders -->
     <skip />
diff --git a/src/com/android/launcher2/AllAppsTabbed.java b/src/com/android/launcher2/AllAppsTabbed.java
index 368306f..aff8ddd 100644
--- a/src/com/android/launcher2/AllAppsTabbed.java
+++ b/src/com/android/launcher2/AllAppsTabbed.java
@@ -127,6 +127,9 @@
             }
         });
 
+        // TEMP: Working around a bug in tab host where the current tab does not initially have a
+        // highlight on it by selecting something else, then selecting the actual tab we want..
+        setCurrentTab(1);
         setCurrentTab(0);
 
         // It needs to be INVISIBLE so that it will be measured in the layout.
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 989ee25..d7c2f5b 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -350,6 +350,9 @@
                 }
             });
     
+            // TEMP: Working around a bug in tab host where the current tab does not initially have
+            // a highlight on it by selecting something else, then selecting the actual tab we want..
+            mHomeCustomizationDrawer.setCurrentTab(1);
             mHomeCustomizationDrawer.setCurrentTab(0);
         }
         setupViews();
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 8332053..97bbbdf 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -406,6 +406,14 @@
                     int halfChildWidth = (childWidth / 2);
                     int childCenter = getChildOffset(i) + halfChildWidth;
 
+                    // On the first layout, we may not have a width nor a proper offset, so for now
+                    // we should just assume full page width (and calculate the offset according to
+                    // that).
+                    if (childWidth <= 0) {
+                        childWidth = getMeasuredWidth();
+                        childCenter = (i * childWidth) + (childWidth / 2);
+                    }
+
                     int d = halfChildWidth;
                     int distanceFromScreenCenter = childCenter - screenCenter;
                     if (distanceFromScreenCenter > 0) {
@@ -419,6 +427,9 @@
                     }
                     d += mPageSpacing;
 
+                    // Preventing potential divide-by-zero
+                    d = Math.max(1, d);
+
                     float dimAlpha = (float) (Math.abs(distanceFromScreenCenter)) / d;
                     dimAlpha = Math.max(0.0f, Math.min(1.0f, (dimAlpha * dimAlpha)));
                     float alpha = 1.0f - dimAlpha;
@@ -1237,6 +1248,7 @@
             // Load any pages that are necessary for the current window of views
             loadAssociatedPages(mCurrentPage);
             mDirtyPageAlpha = true;
+            updateAdjacentPagesAlpha();
             requestLayout();
         }
     }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index ac5c1b9..0d07048 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -717,8 +717,10 @@
             finalAlpha = 0.0f;
             extraShrinkFactor = 0.1f;
         } else if (shrinkPosition == ShrinkPosition.SHRINK_TO_MIDDLE) {
-             newY = screenHeight / 2 - scaledPageHeight / 2;
-             finalAlpha = 1.0f;
+            newY = screenHeight / 2 - scaledPageHeight / 2;
+            finalAlpha = 1.0f;
+        } else if (shrinkPosition == ShrinkPosition.SHRINK_TO_TOP) {
+            newY = screenHeight / 10;
         }
 
         // We animate all the screens to the centered position in workspace