Further improving performance of All Apps transition

Change-Id: Ie8a2af004acba4c13066dd636842a71793064688
diff --git a/res/layout-xlarge-land/all_apps_tabbed.xml b/res/layout-xlarge-land/all_apps_tabbed.xml
index 39c966b..9244213 100644
--- a/res/layout-xlarge-land/all_apps_tabbed.xml
+++ b/res/layout-xlarge-land/all_apps_tabbed.xml
@@ -16,12 +16,15 @@
 <com.android.launcher2.AllAppsTabbed
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">
+    <com.android.launcher2.AllAppsBackground
+        android:id="@+id/all_apps_background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
         <RelativeLayout
-            android:id="@+id/all_apps_tab_bar"
             android:layout_width="952dp"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
diff --git a/res/layout-xlarge-land/customization_drawer.xml b/res/layout-xlarge-land/customization_drawer_tab_contents.xml
similarity index 100%
rename from res/layout-xlarge-land/customization_drawer.xml
rename to res/layout-xlarge-land/customization_drawer_tab_contents.xml
diff --git a/res/layout-xlarge-port/all_apps_tabbed.xml b/res/layout-xlarge-port/all_apps_tabbed.xml
index 7673984..3b83bc7 100644
--- a/res/layout-xlarge-port/all_apps_tabbed.xml
+++ b/res/layout-xlarge-port/all_apps_tabbed.xml
@@ -16,12 +16,14 @@
 <com.android.launcher2.AllAppsTabbed
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">
+    <com.android.launcher2.AllAppsBackground
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
         <RelativeLayout
-            android:id="@+id/all_apps_tab_bar"
             android:layout_width="700dp"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
diff --git a/res/layout-xlarge-port/customization_drawer.xml b/res/layout-xlarge-port/customization_drawer_tab_contents.xml
similarity index 100%
rename from res/layout-xlarge-port/customization_drawer.xml
rename to res/layout-xlarge-port/customization_drawer_tab_contents.xml
diff --git a/res/layout-xlarge/button_bar.xml b/res/layout-xlarge/button_bar.xml
new file mode 100644
index 0000000..6cd8e88
--- /dev/null
+++ b/res/layout-xlarge/button_bar.xml
@@ -0,0 +1,150 @@
+<?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.
+-->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">
+
+   <!-- Global search icon -->
+   <ImageView
+       android:id="@+id/search_button"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:layout_alignParentTop="true"
+       android:layout_alignParentLeft="true"
+       android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
+       android:paddingRight="@dimen/toolbar_button_horizontal_padding"
+       android:paddingTop="@dimen/toolbar_button_vertical_padding"
+       android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+       android:src="@drawable/ic_generic_search"
+       android:background="@drawable/button_bg"
+       android:onClick="onClickSearchButton"
+       android:focusable="true"
+       android:clickable="true" />
+
+    <ImageView
+        android:id="@+id/search_divider"
+        android:src="@drawable/divider_launcher_holo"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_toRightOf="@id/search_button"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+
+        android:onClick="onClickSearchButton"
+        android:focusable="false"
+        android:clickable="true" />
+
+    <!-- Voice search icon -->
+    <ImageView
+        android:id="@+id/voice_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toRightOf="@id/search_divider"
+        android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
+        android:paddingRight="@dimen/toolbar_button_horizontal_padding"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+        android:src="@drawable/ic_voice_search"
+        android:background="@drawable/button_bg"
+        android:onClick="onClickVoiceButton"
+        android:focusable="true"
+        android:clickable="true"/>
+
+    <ImageView
+        android:id="@+id/configure_button"
+        android:src="@drawable/ic_home_add_holo_dark"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentRight="true"
+        android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
+        android:paddingRight="@dimen/toolbar_button_horizontal_padding"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+        android:background="@drawable/button_bg"
+
+        android:focusable="true"
+        android:clickable="true" />
+    <ImageView
+        android:id="@+id/divider"
+        android:src="@drawable/divider_launcher_holo"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_toLeftOf="@id/configure_button"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+
+        android:focusable="false"
+        android:clickable="true" />
+    <TextView
+        android:id="@+id/all_apps_button"
+        android:text="@string/all_apps_button_label"
+        android:drawablePadding="@dimen/all_apps_button_drawable_padding"
+        android:drawableLeft="@drawable/ic_home_all_apps_holo_dark"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="@id/divider"
+        android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
+        android:paddingRight="@dimen/toolbar_button_horizontal_padding"
+        android:paddingTop="@dimen/all_apps_button_vertical_padding"
+        android:paddingBottom="@dimen/all_apps_button_vertical_padding"
+        android:background="@drawable/button_bg"
+
+        android:gravity="center_horizontal|center_vertical"
+        android:textColor="#CCFFFFFF"
+        android:textSize="18sp"
+
+        android:shadowColor="#DA000000"
+        android:shadowDx="0.0"
+        android:shadowDy="0.0"
+        android:shadowRadius="2.5"
+
+        android:focusable="true"
+        android:clickable="true" />
+    <ImageView
+        android:id="@+id/divider_during_drag"
+        android:src="@drawable/divider_launcher_holo"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_toLeftOf="@id/configure_button"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+        android:visibility="gone" />
+    <com.android.launcher2.DeleteZone
+        android:id="@+id/delete_zone"
+        android:text="@string/delete_zone_label_workspace"
+        android:drawablePadding="@dimen/delete_zone_drawable_padding"
+        android:drawableLeft="@drawable/delete_zone_selector"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignRight="@id/configure_button"
+        android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
+        android:paddingRight="@dimen/toolbar_button_horizontal_padding"
+        android:paddingTop="@dimen/toolbar_button_vertical_padding"
+        android:paddingBottom="@dimen/toolbar_button_vertical_padding"
+        android:background="@drawable/button_bg"
+
+        android:gravity="center_horizontal|center_vertical"
+        android:textColor="@color/workspace_all_apps_and_delete_zone_text_color"
+        android:textSize="18sp"
+        android:shadowColor="@color/workspace_all_apps_and_delete_zone_text_shadow_color"
+        android:shadowDx="0.0"
+        android:shadowDy="0.0"
+        android:shadowRadius="2.0"
+
+        android:visibility="gone"
+        launcher:direction="horizontal" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout-xlarge/customization_drawer.xml b/res/layout-xlarge/customization_drawer.xml
new file mode 100644
index 0000000..dd1234c
--- /dev/null
+++ b/res/layout-xlarge/customization_drawer.xml
@@ -0,0 +1,34 @@
+<?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.
+-->
+<TabHost xmlns:android="http://schemas.android.com/apk/res/android">
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <TabWidget
+            android:id="@android:id/tabs"
+            android:layout_width="@dimen/customization_drawer_tab_widget_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:background="@drawable/tab_unselected_holo"
+            android:tabStripEnabled="false" />
+        <FrameLayout
+            android:id="@android:id/tabcontent"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/customization_drawer_content_height">
+         </FrameLayout>
+      </LinearLayout>
+</TabHost>
\ No newline at end of file
diff --git a/res/layout-xlarge/launcher.xml b/res/layout-xlarge/launcher.xml
index a7cf321..acf62f9 100644
--- a/res/layout-xlarge/launcher.xml
+++ b/res/layout-xlarge/launcher.xml
@@ -48,165 +48,15 @@
         android:layout_height="match_parent"
         android:layout_gravity="top" />
 
-    <RelativeLayout
+    <include layout="@layout/button_bar"
         android:id="@+id/all_apps_button_cluster"
         android:layout_width="fill_parent"
         android:layout_height="?android:attr/actionBarSize"
-        android:layout_gravity="top">
+        android:layout_gravity="top" />
 
-       <!-- Global search icon -->
-       <ImageView
-           android:id="@+id/search_button"
-           android:layout_width="wrap_content"
-           android:layout_height="wrap_content"
-           android:layout_alignParentTop="true"
-           android:layout_alignParentLeft="true"
-           android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-           android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-           android:paddingTop="@dimen/toolbar_button_vertical_padding"
-           android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-           android:src="@drawable/ic_generic_search"
-           android:background="@drawable/button_bg"
-           android:onClick="onClickSearchButton"
-           android:focusable="true"
-           android:clickable="true" />
-
-        <ImageView
-            android:id="@+id/search_divider"
-            android:src="@drawable/divider_launcher_holo"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_toRightOf="@id/search_button"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-
-            android:onClick="onClickSearchButton"
-            android:focusable="false"
-            android:clickable="true" />
-
-        <!-- Voice search icon -->
-        <ImageView
-            android:id="@+id/voice_button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toRightOf="@id/search_divider"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-            android:src="@drawable/ic_voice_search"
-            android:background="@drawable/button_bg"
-            android:onClick="onClickVoiceButton"
-            android:focusable="true"
-            android:clickable="true"/>
-
-        <ImageView
-            android:id="@+id/configure_button"
-            android:src="@drawable/ic_home_add_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_alignParentRight="true"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-            android:background="@drawable/button_bg"
-
-            android:focusable="true"
-            android:clickable="true" />
-        <ImageView
-            android:id="@+id/divider"
-            android:src="@drawable/divider_launcher_holo"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_toLeftOf="@id/configure_button"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-
-            android:focusable="false"
-            android:clickable="true" />
-        <TextView
-            android:id="@+id/all_apps_button"
-            android:text="@string/all_apps_button_label"
-            android:drawablePadding="@dimen/all_apps_button_drawable_padding"
-            android:drawableLeft="@drawable/ic_home_all_apps_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toLeftOf="@id/divider"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/all_apps_button_vertical_padding"
-            android:paddingBottom="@dimen/all_apps_button_vertical_padding"
-            android:background="@drawable/button_bg"
-
-            android:gravity="center_horizontal|center_vertical"
-            android:textColor="#CCFFFFFF"
-            android:textSize="18sp"
-
-            android:shadowColor="#DA000000"
-            android:shadowDx="0.0"
-            android:shadowDy="0.0"
-            android:shadowRadius="2.5"
-
-            android:focusable="true"
-            android:clickable="true" />
-        <ImageView
-            android:id="@+id/divider_during_drag"
-            android:src="@drawable/divider_launcher_holo"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_toLeftOf="@id/configure_button"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-            android:visibility="gone" />
-        <com.android.launcher2.DeleteZone
-            android:id="@+id/delete_zone"
-            android:text="@string/delete_zone_label_workspace"
-            android:drawablePadding="@dimen/delete_zone_drawable_padding"
-            android:drawableLeft="@drawable/delete_zone_selector"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignRight="@id/configure_button"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-            android:background="@drawable/button_bg"
-
-            android:gravity="center_horizontal|center_vertical"
-            android:textColor="@color/workspace_all_apps_and_delete_zone_text_color"
-            android:textSize="18sp"
-            android:shadowColor="@color/workspace_all_apps_and_delete_zone_text_shadow_color"
-            android:shadowDx="0.0"
-            android:shadowDy="0.0"
-            android:shadowRadius="2.0"
-
-            android:visibility="gone"
-            launcher:direction="horizontal" />
-    </RelativeLayout>
-
-    <TabHost
+    <include layout="@layout/customization_drawer"
         android:id="@+id/customization_drawer"
         android:layout_width="match_parent"
         android:layout_height="@dimen/customization_drawer_height"
-        android:layout_gravity="bottom">
-        <LinearLayout
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-            <TabWidget
-                android:id="@android:id/tabs"
-                android:layout_width="@dimen/customization_drawer_tab_widget_width"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:background="@drawable/tab_unselected_holo"
-                android:tabStripEnabled="false" />
-            <FrameLayout
-                android:id="@android:id/tabcontent"
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/customization_drawer_content_height">
-             </FrameLayout>
-          </LinearLayout>
-    </TabHost>
+        android:layout_gravity="bottom" />
 </com.android.launcher2.DragLayer>
diff --git a/res/values-xlarge/config.xml b/res/values-xlarge/config.xml
index 90d8dc4..56c7bc6 100644
--- a/res/values-xlarge/config.xml
+++ b/res/values-xlarge/config.xml
@@ -9,7 +9,8 @@
 
     <!-- Duration in milliseconds of the all apps / configuration zoom-in animation. -->
     <!-- NB: This should be less than the workspaceShrinkTime as they happen together. -->
-    <integer name="config_allAppsZoomInTime">1211</integer>
+    <integer name="config_allAppsZoomInTime">1000</integer>
+    <integer name="config_allAppsFadeInTime">250</integer>
 
     <!-- Duration in milliseconds of the transition between tabs in the all apps/customize
          tray -->
@@ -25,6 +26,7 @@
     <!-- Duration in milliseconds of the all apps / configuration zoom-in animation. -->
     <!-- NB: This should be less than the workspaceShrinkTime as they happen together. -->
     <integer name="config_customizeZoomInTime">800</integer>
+    <integer name="config_customizeFadeInTime">800</integer>
 
     <!-- Duration in milliseconds of the all apps zoom-out animation -->
     <!-- NB: This should be less than the workspaceUnshrinkTime as they happen together. -->
@@ -37,7 +39,7 @@
          NOTE: If these are changed, the toolbar animation times below should also be. -->
     <integer name="config_allAppsFadeOutTime">500</integer>
     <integer name="config_customizeWorkspaceShrinkTime">800</integer>
-    <integer name="config_allAppsWorkspaceShrinkTime">1211</integer>
+    <integer name="config_allAppsWorkspaceShrinkTime">1000</integer>
     <integer name="config_workspaceUnshrinkTime">650</integer>
 
     <!-- Duration in milliseconds toolbar fade in and fade out animations.