Support gray hotseat background in all apps transition
b/30201515

Change-Id: Ie4b8442ac804b4df94e9673608129e6ffc0c3360
diff --git a/res/values/colors.xml b/res/values/colors.xml
index dccc53e..15d4f52 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -4,16 +4,16 @@
 **
 ** Copyright 2008, 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 
+** 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 
+**     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 
+** 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.
 */
 -->
@@ -37,6 +37,7 @@
     <color name="outline_color">#FFFFFFFF</color>
     <color name="all_apps_divider_color">#1E000000</color>
     <color name="all_apps_caret_color">#FFFFFFFF</color>
+    <color name="all_apps_container_color">#FFF2F2F2</color>
 
     <color name="spring_loaded_panel_color">#40FFFFFF</color>
     <color name="spring_loaded_highlighted_panel_border_color">#FFF</color>
diff --git a/src/com/android/launcher3/BaseContainerView.java b/src/com/android/launcher3/BaseContainerView.java
index f9c2407..57a60a9 100644
--- a/src/com/android/launcher3/BaseContainerView.java
+++ b/src/com/android/launcher3/BaseContainerView.java
@@ -36,7 +36,8 @@
 
     protected final int mHorizontalPadding;
 
-    private final Drawable mRevealDrawable;
+    private final InsetDrawable mRevealDrawable;
+    private final ColorDrawable mDrawable;
 
     private View mRevealView;
     private View mContent;
@@ -63,14 +64,16 @@
         }
 
         if (FeatureFlags.LAUNCHER3_ALL_APPS_PULL_UP && this instanceof AllAppsContainerView) {
-            mRevealDrawable = new InsetDrawable(new ColorDrawable(Color.WHITE), mHorizontalPadding,
-                    0, mHorizontalPadding, 0);
+            mDrawable = new ColorDrawable();
+            mRevealDrawable = new InsetDrawable(mDrawable,
+                    mHorizontalPadding, 0, mHorizontalPadding, 0);
         } else {
             TypedArray a = context.obtainStyledAttributes(attrs,
                     R.styleable.BaseContainerView, defStyleAttr, 0);
             mRevealDrawable = new InsetDrawable(
                     a.getDrawable(R.styleable.BaseContainerView_revealBackground),
                     mHorizontalPadding, 0, mHorizontalPadding, 0);
+            mDrawable = null;
             a.recycle();
         }
     }
@@ -82,8 +85,12 @@
         mContent = findViewById(R.id.main_content);
         mRevealView = findViewById(R.id.reveal_view);
 
-        mRevealView.setBackground(mRevealDrawable.getConstantState().newDrawable());
-        mContent.setBackground(mRevealDrawable);
+        if (FeatureFlags.LAUNCHER3_ALL_APPS_PULL_UP && this instanceof AllAppsContainerView) {
+            mRevealView.setBackground(mRevealDrawable);
+        } else {
+            mRevealView.setBackground(mRevealDrawable.getConstantState().newDrawable());
+            mContent.setBackground(mRevealDrawable);
+        }
 
         // We let the content have a intent background, but still have full width.
         // This allows the scroll bar to be used responsive outside the background bounds as well.
@@ -97,4 +104,8 @@
     public final View getRevealView() {
         return mRevealView;
     }
+
+    public void setRevealDrawableColor(int color) {
+        mDrawable.setColor(color);
+    }
 }
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index b75d2c0..7e2b42e 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -23,6 +23,7 @@
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.support.v4.graphics.ColorUtils;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -67,7 +68,9 @@
         super(context, attrs, defStyle);
         mLauncher = (Launcher) context;
         mHasVerticalHotseat = mLauncher.getDeviceProfile().isVerticalBarLayout();
-        mBackground = new ColorDrawable();
+        mBackgroundColor = ColorUtils.setAlphaComponent(
+                context.getColor(R.color.all_apps_container_color), 0);
+        mBackground = new ColorDrawable(mBackgroundColor);
         setBackground(mBackground);
     }
 
@@ -227,7 +230,7 @@
         }
     }
 
-    public int getBackgroundDrawableAlpha() {
-        return Color.alpha(mBackgroundColor);
+    public int getBackgroundDrawableColor() {
+        return mBackgroundColor;
     }
 }
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index f0469e3..195ab47 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -366,9 +366,7 @@
 
         // TODO(hyunyoungs): clean up setting the content and the reveal view.
         if (FeatureFlags.LAUNCHER3_ALL_APPS_PULL_UP) {
-            getContentView().setBackground(null);
             getRevealView().setVisibility(View.VISIBLE);
-            getRevealView().setAlpha(AllAppsTransitionController.ALL_APPS_FINAL_ALPHA);
         }
     }
 
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index f6e028b..85af60e 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -3,7 +3,9 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
+import android.animation.ArgbEvaluator;
 import android.animation.ObjectAnimator;
+import android.graphics.Color;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
@@ -43,14 +45,14 @@
     private final Interpolator mDecelInterpolator = new DecelerateInterpolator(1f);
 
     private static final float ANIMATION_DURATION = 1200;
-    public static final float ALL_APPS_FINAL_ALPHA = .9f;
 
     private static final float PARALLAX_COEFFICIENT = .125f;
 
     private AllAppsContainerView mAppsView;
+    private int mAllAppsBackgroundColor;
     private Workspace mWorkspace;
     private Hotseat mHotseat;
-    private float mHotseatBackgroundAlpha;
+    private int mHotseatBackgroundColor;
 
     private ObjectAnimator mCaretAnimator;
     private final long mCaretAnimationDuration;
@@ -60,6 +62,7 @@
 
     private final Launcher mLauncher;
     private final VerticalPullDetector mDetector;
+    private final ArgbEvaluator mEvaluator;
 
     // Animation in this class is controlled by a single variable {@link mShiftCurrent}.
     // Visually, it represents top y coordinate of the all apps container. Using the
@@ -95,6 +98,8 @@
                 R.integer.config_caretAnimationDuration);
         mCaretInterpolator = AnimationUtils.loadInterpolator(launcher,
                 R.interpolator.caret_animation_interpolator);
+        mEvaluator = new ArgbEvaluator();
+        mAllAppsBackgroundColor = launcher.getColor(R.color.all_apps_container_color);
     }
 
     @Override
@@ -248,17 +253,15 @@
             mStatusBarHeight = mLauncher.getDragLayer().getInsets().top;
             mHotseat.setVisibility(View.VISIBLE);
             mHotseat.bringToFront();
-
             if (!mLauncher.isAllAppsVisible()) {
                 mLauncher.tryAndUpdatePredictedApps();
-
-                mHotseatBackgroundAlpha = mHotseat.getBackgroundDrawableAlpha() / 255f;
+                mHotseatBackgroundColor = mHotseat.getBackgroundDrawableColor();
                 mHotseat.setBackgroundTransparent(true /* transparent */);
                 mAppsView.setVisibility(View.VISIBLE);
                 mAppsView.getContentView().setVisibility(View.VISIBLE);
                 mAppsView.getContentView().setBackground(null);
                 mAppsView.getRevealView().setVisibility(View.VISIBLE);
-                mAppsView.getRevealView().setAlpha(mHotseatBackgroundAlpha);
+                mAppsView.setRevealDrawableColor(mHotseatBackgroundColor);
             }
         } else {
             setProgress(mShiftCurrent);
@@ -297,8 +300,9 @@
         float alpha = calcAlphaAllApps(progress);
         float workspaceHotseatAlpha = 1 - alpha;
 
-        mAppsView.getRevealView().setAlpha(Math.min(ALL_APPS_FINAL_ALPHA, Math.max(mHotseatBackgroundAlpha,
-                mDecelInterpolator.getInterpolation(alpha))));
+        int color = (Integer) mEvaluator.evaluate(mDecelInterpolator.getInterpolation(alpha),
+                mHotseatBackgroundColor, mAllAppsBackgroundColor);
+        mAppsView.setRevealDrawableColor(color);
         mAppsView.getContentView().setAlpha(alpha);
         mAppsView.setTranslationY(progress);
         mWorkspace.setWorkspaceYTranslationAndAlpha(