diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2016-07-18 16:35:10 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2016-07-18 16:35:10 -0700 |
commit | e4be3b3fdb29c6adb51ee05730c1693ba8d04587 (patch) | |
tree | 3155f8158cbe64aceb0be761b7ee9a6c46f22c4e | |
parent | 77ba6b9cad542a78910b6d7c638a1254b31d79ab (diff) | |
download | android_packages_apps_Trebuchet-e4be3b3fdb29c6adb51ee05730c1693ba8d04587.tar.gz android_packages_apps_Trebuchet-e4be3b3fdb29c6adb51ee05730c1693ba8d04587.tar.bz2 android_packages_apps_Trebuchet-e4be3b3fdb29c6adb51ee05730c1693ba8d04587.zip |
Support gray hotseat background in all apps transition
b/30201515
Change-Id: Ie4b8442ac804b4df94e9673608129e6ffc0c3360
-rw-r--r-- | res/values/colors.xml | 17 | ||||
-rw-r--r-- | src/com/android/launcher3/BaseContainerView.java | 21 | ||||
-rw-r--r-- | src/com/android/launcher3/Hotseat.java | 9 | ||||
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsContainerView.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsTransitionController.java | 20 |
5 files changed, 43 insertions, 26 deletions
diff --git a/res/values/colors.xml b/res/values/colors.xml index dccc53ef9..15d4f5292 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 f9c2407d4..57a60a95d 100644 --- a/src/com/android/launcher3/BaseContainerView.java +++ b/src/com/android/launcher3/BaseContainerView.java @@ -36,7 +36,8 @@ public abstract class BaseContainerView extends FrameLayout { 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 @@ public abstract class BaseContainerView extends FrameLayout { } 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 @@ public abstract class BaseContainerView extends FrameLayout { 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 abstract class BaseContainerView extends FrameLayout { 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 b75d2c0da..7e2b42e49 100644 --- a/src/com/android/launcher3/Hotseat.java +++ b/src/com/android/launcher3/Hotseat.java @@ -23,6 +23,7 @@ import android.graphics.Color; 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 @@ public class Hotseat extends FrameLayout 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 class Hotseat extends FrameLayout } } - 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 f0469e379..195ab4751 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -366,9 +366,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc // 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 f6e028b59..85af60eb8 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -3,7 +3,9 @@ package com.android.launcher3.allapps; 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 @@ public class AllAppsTransitionController implements TouchController, VerticalPul 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 @@ public class AllAppsTransitionController implements TouchController, VerticalPul 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 @@ public class AllAppsTransitionController implements TouchController, VerticalPul 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 @@ public class AllAppsTransitionController implements TouchController, VerticalPul 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 @@ public class AllAppsTransitionController implements TouchController, VerticalPul 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( |