Merge "Fix for 5067464, portal text not aligned in landscape"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ace53ef..8382977 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -68,7 +68,7 @@
         android:label="@string/application_name"
         android:icon="@drawable/ic_launcher_home"
         android:hardwareAccelerated="@bool/config_hardwareAccelerated"
-        android:largeHeap="true">
+        android:largeHeap="@bool/config_largeHeap">
         <activity
             android:name="com.android.launcher2.Launcher"
             android:launchMode="singleTask"
diff --git a/res/values-large/config.xml b/res/values-large/config.xml
index f0ce348..6274364 100644
--- a/res/values-large/config.xml
+++ b/res/values-large/config.xml
@@ -1,4 +1,6 @@
 <resources>
+    <bool name="config_largeHeap">true</bool>
+
 <!-- AllApps/Customize/AppsCustomize -->
     <!-- Out of 100, the percent to shrink the workspace during spring loaded mode. -->
     <integer name="config_workspaceSpringLoadShrinkPercentage">90</integer>
diff --git a/res/values/config.xml b/res/values/config.xml
index 5ddf0a1..9a2c1f2 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -1,5 +1,6 @@
 <resources>
     <bool name="config_hardwareAccelerated">true</bool>
+    <bool name="config_largeHeap">false</bool>
 
 <!-- AllApps/Customize/AppsCustomize -->
     <!-- The alpha of the AppsCustomize bg in spring loaded mode -->
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 035d9ea..a198c6d 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1369,16 +1369,12 @@
         final int screenCount = getChildCount();
         float totalWidth = screenCount * scaledPageWidth + (screenCount - 1) * extraScaledSpacing;
 
+        // We shrink and disappear to nothing
         boolean isPortrait = getMeasuredHeight() > getMeasuredWidth();
-        float y = (isPortrait ?
+        float y = screenHeight - scaledPageHeight - (isPortrait ?
                 getResources().getDimension(R.dimen.allAppsSmallScreenVerticalMarginPortrait) :
                 getResources().getDimension(R.dimen.allAppsSmallScreenVerticalMarginLandscape));
-        float finalAlpha = 1.0f;
-        float extraShrinkFactor = 1.0f;
-
-        // We shrink and disappear to nothing
-        y = screenHeight - y - scaledPageHeight;
-        finalAlpha = 0.0f;
+        float finalAlpha = 0.0f;
 
         int duration = res.getInteger(R.integer.config_appsCustomizeWorkspaceShrinkTime);
 
@@ -1402,7 +1398,6 @@
         mUnshrinkAnimationEnabled = false;
         mShrinkAnimationEnabled = true;
 
-        final int childCount = getChildCount();
         initAnimationArrays();
 
         for (int i = 0; i < screenCount; i++) {
@@ -1428,17 +1423,17 @@
                 mOldRotationYs[i] = cl.getRotationY();
                 mNewTranslationXs[i] = x;
                 mNewTranslationYs[i] = y;
-                mNewScaleXs[i] = shrinkFactor * rotationScaleX * extraShrinkFactor;
-                mNewScaleYs[i] = shrinkFactor * rotationScaleY * extraShrinkFactor;
+                mNewScaleXs[i] = shrinkFactor * rotationScaleX;
+                mNewScaleYs[i] = shrinkFactor * rotationScaleY;
                 mNewBackgroundAlphas[i] = finalAlpha;
                 mNewRotationYs[i] = rotation;
             } else {
                 cl.setX((int)x);
                 cl.setY((int)y);
-                cl.setScaleX(shrinkFactor * rotationScaleX * extraShrinkFactor);
-                cl.setScaleY(shrinkFactor * rotationScaleY * extraShrinkFactor);
+                cl.setScaleX(shrinkFactor * rotationScaleX);
+                cl.setScaleY(shrinkFactor * rotationScaleY);
                 cl.setBackgroundAlpha(finalAlpha);
-                cl.setAlpha(finalAlpha);
+                cl.setFastAlpha(finalAlpha);
                 cl.setRotationY(rotation);
                 mShrinkAnimationListener.onAnimationEnd(null);
             }
@@ -1531,6 +1526,13 @@
         showBackgroundGradientForAllApps();
     }
 
+    @Override
+    protected void updateAdjacentPagesAlpha() {
+        if (!isSmall()) {
+            super.updateAdjacentPagesAlpha();
+        }
+    }
+
     /*
      * This interpolator emulates the rate at which the perceived scale of an object changes
      * as its distance from a camera increases. When this interpolator is applied to a scale
@@ -3143,7 +3145,6 @@
         mSpringLoadedDragController = new SpringLoadedDragController(mLauncher);
         mDragController = dragController;
 
-
         // hardware layers on children are enabled on startup, but should be disabled until
         // needed
         updateChildrenLayersEnabled();