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

Commit 9bf6f5b0 authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "Lose navigation bar icon alpha in transparent modes." into klp-dev

parents 58514937 89835ddf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
    <drawable name="notification_number_text_color">#ffffffff</drawable>
    <drawable name="ticker_background_color">#ff1d1d1d</drawable>
    <drawable name="status_bar_background">#ff000000</drawable>
    <color name="status_bar_background_transient">#55000000</color>
    <color name="status_bar_background_semi_transparent">#55000000</color>
    <color name="status_bar_background_transparent">#00000000</color>
    <color name="navigation_bar_background_transparent_start">#7f000000</color>
    <color name="navigation_bar_background_transparent_end">#00000000</color>
+17 −10
Original line number Diff line number Diff line
@@ -30,24 +30,24 @@ public class BarTransitions {
    private static final boolean DEBUG = false;

    public static final int MODE_NORMAL = 0;
    public static final int MODE_TRANSIENT = 1;
    public static final int MODE_SEMI_TRANSPARENT = 1;
    public static final int MODE_TRANSPARENT = 2;

    private final String mTag;
    private final View mTarget;
    private final Drawable mOpaque;
    private final Drawable mTransient;
    private final Drawable mSemiTransparent;

    private Drawable mTransparent;
    protected Drawable mTransparent;
    private int mMode;

    public BarTransitions(Context context, View target, Drawable transparent) {
    public BarTransitions(Context context, View target) {
        mTag = "BarTransitions." + target.getClass().getSimpleName();
        mTarget = target;
        final Resources res = context.getResources();
        mOpaque = new ColorDrawable(res.getColor(R.drawable.status_bar_background));
        mTransient = new ColorDrawable(res.getColor(R.color.status_bar_background_transient));
        mTransparent = transparent;
        mSemiTransparent =
                new ColorDrawable(res.getColor(R.color.status_bar_background_semi_transparent));
    }

    public void setTransparent(Drawable transparent) {
@@ -58,18 +58,25 @@ public class BarTransitions {
    }

    public void transitionTo(int mode) {
        if (mMode == mode) return;
        int oldMode = mMode;
        mMode = mode;
        if (!ActivityManager.isHighEndGfx()) return;
        if (DEBUG) Log.d(mTag, "transitionTo " + modeToString(mode));
        Drawable background = mode == MODE_TRANSIENT ? mTransient
                : mode == MODE_TRANSPARENT ? mTransparent
        if (DEBUG) Log.d(mTag, String.format("transition from %s to %s",
                modeToString(oldMode), modeToString(mode)));
        onTransition(oldMode, mMode);
    }

    protected void onTransition(int oldMode, int newMode) {
        Drawable background = newMode == MODE_SEMI_TRANSPARENT ? mSemiTransparent
                : newMode == MODE_TRANSPARENT ? mTransparent
                : mOpaque;
        mTarget.setBackground(background);
    }

    public static String modeToString(int mode) {
        if (mode == MODE_NORMAL) return "MODE_NORMAL";
        if (mode == MODE_TRANSIENT) return "MODE_TRANSIENT";
        if (mode == MODE_SEMI_TRANSPARENT) return "MODE_SEMI_TRANSPARENT";
        if (mode == MODE_TRANSPARENT) return "MODE_TRANSPARENT";
        throw new IllegalArgumentException("Unknown mode " + mode);
    }
+41 −11
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.DelegateViewHelper;
import com.android.systemui.statusbar.policy.DeadZone;
import com.android.systemui.statusbar.policy.KeyButtonView;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -81,9 +82,7 @@ public class NavigationBarView extends LinearLayout {

    private DelegateViewHelper mDelegateHelper;
    private DeadZone mDeadZone;
    private final BarTransitions mBarTransitions;
    private final Drawable mTransparent;
    private final Drawable mTransparentVertical;
    private final NavigationBarTransitions mBarTransitions;

    // workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288)
    final static boolean WORKAROUND_INVALID_LAYOUT = true;
@@ -112,6 +111,43 @@ public class NavigationBarView extends LinearLayout {
        }
    }

    private final class NavigationBarTransitions extends BarTransitions {

        private final Drawable mTransparentBottom;
        private final Drawable mTransparentRight;

        public NavigationBarTransitions(Context context) {
            super(context, NavigationBarView.this);
            final Resources res = mContext.getResources();
            final int[] gradientColors = new int[] {
                    res.getColor(R.color.navigation_bar_background_transparent_start),
                    res.getColor(R.color.navigation_bar_background_transparent_end)
            };
            mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors);
            mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors);
        }

        public void setVertical(boolean isVertical) {
            mTransparent = isVertical ? mTransparentRight : mTransparentBottom;
        }

        @Override
        protected void onTransition(int oldMode, int newMode) {
            super.onTransition(oldMode, newMode);
            final float alpha = newMode == MODE_NORMAL ? KeyButtonView.DEFAULT_QUIESCENT_ALPHA : 1f;
            setKeyButtonViewQuiescentAlpha(getBackButton(), alpha);
            setKeyButtonViewQuiescentAlpha(getHomeButton(), alpha);
            setKeyButtonViewQuiescentAlpha(getRecentsButton(), alpha);
            setKeyButtonViewQuiescentAlpha(getMenuButton(), alpha);
        }

        private void setKeyButtonViewQuiescentAlpha(View button, float alpha) {
            if (button instanceof KeyButtonView) {
                ((KeyButtonView) button).setQuiescentAlpha(alpha);
            }
        }
    }

    public NavigationBarView(Context context, AttributeSet attrs) {
        super(context, attrs);

@@ -130,13 +166,7 @@ public class NavigationBarView extends LinearLayout {

        getIcons(res);

        final int[] gradientColors = new int[] {
                res.getColor(R.color.navigation_bar_background_transparent_start),
                res.getColor(R.color.navigation_bar_background_transparent_end)
        };
        mTransparent = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors);
        mTransparentVertical = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors);
        mBarTransitions = new BarTransitions(context, this, mTransparent);
        mBarTransitions = new NavigationBarTransitions(context);
    }

    public BarTransitions getBarTransitions() {
@@ -423,7 +453,7 @@ public class NavigationBarView extends LinearLayout {
        }

        setNavigationIconHints(mNavigationIconHints, true);
        mBarTransitions.setTransparent(mVertical ? mTransparentVertical : mTransparent);
        mBarTransitions.setVertical(mVertical);
    }

    @Override
+3 −3
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.phone;

import static com.android.systemui.statusbar.phone.BarTransitions.MODE_NORMAL;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSIENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;

import android.animation.Animator;
@@ -1912,7 +1912,7 @@ public class PhoneStatusBar extends BaseStatusBar {

            if (sbMode != -1 || nbMode != -1) {
                // update transient bar autohide
                if (sbMode == MODE_TRANSIENT || nbMode == MODE_TRANSIENT) {
                if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) {
                    scheduleAutohide();
                } else {
                    cancelAutohide();
@@ -1936,7 +1936,7 @@ public class PhoneStatusBar extends BaseStatusBar {
    }

    private int barMode(int vis, int transientFlag, int transparentFlag) {
        return (vis & transientFlag) != 0 ? MODE_TRANSIENT
        return (vis & transientFlag) != 0 ? MODE_SEMI_TRANSPARENT
                : (vis & transparentFlag) != 0 ? MODE_TRANSPARENT
                : MODE_NORMAL;
    }
+10 −3
Original line number Diff line number Diff line
@@ -46,7 +46,15 @@ public class PhoneStatusBarView extends PanelBar {
    PanelView mLastFullyOpenedPanel = null;
    PanelView mNotificationPanel, mSettingsPanel;
    private boolean mShouldFade;
    private final BarTransitions mBarTransitions;
    private final StatusBarTransitions mBarTransitions;

    private final class StatusBarTransitions extends BarTransitions {
        public StatusBarTransitions(Context context) {
            super(context, PhoneStatusBarView.this);
            final Resources res = context.getResources();
            mTransparent = res.getDrawable(R.color.status_bar_background_transparent);
        }
    }

    public PhoneStatusBarView(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -60,8 +68,7 @@ public class PhoneStatusBarView extends PanelBar {
            mSettingsPanelDragzoneFrac = 0f;
        }
        mFullWidthNotifications = mSettingsPanelDragzoneFrac <= 0f;
        final Drawable transparent = res.getDrawable(R.color.status_bar_background_transparent);
        mBarTransitions = new BarTransitions(context, this, transparent);
        mBarTransitions = new StatusBarTransitions(context);
    }

    public BarTransitions getBarTransitions() {
Loading