Support gray hotseat background in all apps transition
b/30201515
Change-Id: Ie4b8442ac804b4df94e9673608129e6ffc0c3360
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(