Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4be3b3f authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

Support gray hotseat background in all apps transition

b/30201515

Change-Id: Ie4b8442ac804b4df94e9673608129e6ffc0c3360
parent 77ba6b9c
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -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>
+16 −5
Original line number Diff line number Diff line
@@ -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);

        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);
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -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;
    }
}
+0 −2
Original line number Diff line number Diff line
@@ -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);
        }
    }

+12 −8
Original line number Diff line number Diff line
@@ -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(