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

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

Merge "Dim status icons / battery / clock on opaque bars." into klp-dev

parents d0e2a2e7 e6f0a716
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ import com.android.systemui.R;
import com.android.systemui.RecentsComponent;
import com.android.systemui.SearchPanelView;
import com.android.systemui.SystemUI;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.policy.NotificationRowLayout;

import java.util.ArrayList;
@@ -828,7 +827,7 @@ public abstract class BaseStatusBar extends SystemUI implements
        // Construct the icon.
        final StatusBarIconView iconView = new StatusBarIconView(mContext,
                notification.getPackageName() + "/0x" + Integer.toHexString(notification.getId()),
                notification.getNotification(), getStatusBarMode());
                notification.getNotification());
        iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

        final StatusBarIcon ic = new StatusBarIcon(notification.getPackageName(),
@@ -851,10 +850,6 @@ public abstract class BaseStatusBar extends SystemUI implements
        return entry;
    }

    protected int getStatusBarMode() {
        return BarTransitions.MODE_OPAQUE;
    }

    protected void addNotificationViews(NotificationData.Entry entry) {
        // Add the expanded view and icon.
        int pos = mNotificationData.add(entry);
+1 −21
Original line number Diff line number Diff line
@@ -16,11 +16,6 @@

package com.android.systemui.statusbar;

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

import android.animation.ObjectAnimator;
import android.app.Notification;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -53,13 +48,10 @@ public class StatusBarIconView extends AnimatedImageView {
    private int mNumberY;
    private String mNumberText;
    private Notification mNotification;
    private final float mAlphaWhenOpaque;
    private final float mAlphaWhenTransparent = 1;

    public StatusBarIconView(Context context, String slot, Notification notification, int mode) {
    public StatusBarIconView(Context context, String slot, Notification notification) {
        super(context);
        final Resources res = context.getResources();
        mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
        mSlot = slot;
        mNumberPain = new Paint();
        mNumberPain.setTextAlign(Paint.Align.CENTER);
@@ -76,7 +68,6 @@ public class StatusBarIconView extends AnimatedImageView {
            final float scale = (float)imageBounds / (float)outerBounds;
            setScaleX(scale);
            setScaleY(scale);
            setAlpha(getAlphaFor(mode));
        }

        setScaleType(ImageView.ScaleType.CENTER);
@@ -85,22 +76,11 @@ public class StatusBarIconView extends AnimatedImageView {
    public StatusBarIconView(Context context, AttributeSet attrs) {
        super(context, attrs);
        final Resources res = context.getResources();
        mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
        final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
        final float scale = (float)imageBounds / (float)outerBounds;
        setScaleX(scale);
        setScaleY(scale);
        setAlpha(getAlphaFor(MODE_OPAQUE));
    }

    public ObjectAnimator animateTransitionTo(int mode) {
        return ObjectAnimator.ofFloat(this, "alpha", getAlpha(), getAlphaFor(mode));
    }

    public float getAlphaFor(int mode) {
        final boolean isTransparent = mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT;
        return isTransparent ? mAlphaWhenTransparent : mAlphaWhenOpaque;
    }

    private static boolean streq(String a, String b) {
+1 −6
Original line number Diff line number Diff line
@@ -839,7 +839,7 @@ public class PhoneStatusBar extends BaseStatusBar {
    public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
        if (SPEW) Log.d(TAG, "addIcon slot=" + slot + " index=" + index + " viewIndex=" + viewIndex
                + " icon=" + icon);
        StatusBarIconView view = new StatusBarIconView(mContext, slot, null, getStatusBarMode());
        StatusBarIconView view = new StatusBarIconView(mContext, slot, null);
        view.set(icon);
        mStatusIcons.addView(view, viewIndex, new LinearLayout.LayoutParams(mIconSize, mIconSize));
    }
@@ -1857,11 +1857,6 @@ public class PhoneStatusBar extends BaseStatusBar {
        }
    }

    @Override
    protected int getStatusBarMode() {
        return mStatusBarView.getBarTransitions().getMode();
    }

    private int computeBarMode(int oldVis, int newVis, BarTransitions transitions,
            int transientFlag, int transparentFlag) {
        final int oldMode = barMode(oldVis, transientFlag, transparentFlag);
+35 −33
Original line number Diff line number Diff line
@@ -16,8 +16,12 @@

package com.android.systemui.statusbar.phone;

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;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Resources;
@@ -27,15 +31,10 @@ import android.util.EventLog;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;

import com.android.systemui.EventLogTags;
import com.android.systemui.R;
import com.android.systemui.statusbar.StatusBarIconView;

import java.util.ArrayList;
import java.util.List;

public class PhoneStatusBarView extends PanelBar {
    private static final String TAG = "PhoneStatusBarView";
@@ -56,11 +55,22 @@ public class PhoneStatusBarView extends PanelBar {

    private final class StatusBarTransitions extends BarTransitions {
        private final int mTransparent;
        private final float mAlphaWhenOpaque;
        private final float mAlphaWhenTransparent = 1;
        private View mLeftSide;
        private View mRightSide;

        public StatusBarTransitions(Context context) {
            super(context, PhoneStatusBarView.this);
            final Resources res = context.getResources();
            mTransparent = res.getColor(R.color.status_bar_background_transparent);
            mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
        }

        public void init() {
            mLeftSide = findViewById(R.id.notification_icon_area);
            mRightSide = findViewById(R.id.system_icon_area);
            applyMode(getMode(), false /*animate*/);
        }

        @Override
@@ -69,41 +79,32 @@ public class PhoneStatusBarView extends PanelBar {
            return super.getBackgroundColor(mode);
        }

        public ObjectAnimator animateTransitionTo(View v, float toAlpha) {
            return ObjectAnimator.ofFloat(v, "alpha", v.getAlpha(), toAlpha);
        }

        public float getAlphaFor(int mode) {
            final boolean isTransparent = mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT;
            return isTransparent ? mAlphaWhenTransparent : mAlphaWhenOpaque;
        }

        @Override
        protected void onTransition(int oldMode, int newMode, boolean animate) {
            super.onTransition(oldMode, newMode, animate);
            if (animate) {
                List<Animator> animators = new ArrayList<Animator>();
                for(StatusBarIconView icon : findStatusBarIcons()) {
                    animators.add(icon.animateTransitionTo(newMode));
            applyMode(newMode, animate);
        }

        private void applyMode(int mode, boolean animate) {
            float newAlpha = getAlphaFor(mode);
            if (animate) {
                ObjectAnimator lhs = animateTransitionTo(mLeftSide, newAlpha);
                ObjectAnimator rhs = animateTransitionTo(mRightSide, newAlpha);
                AnimatorSet set = new AnimatorSet();
                set.playTogether(animators);
                set.playTogether(lhs, rhs);
                set.start();
            } else {
                for(StatusBarIconView icon : findStatusBarIcons()) {
                    icon.setAlpha(icon.getAlphaFor(newMode));
                }
            }
        }

        private List<StatusBarIconView> findStatusBarIcons() {
            List<StatusBarIconView> icons = new ArrayList<StatusBarIconView>();
            findStatusBarIcons(icons, findViewById(R.id.moreIcon));
            findStatusBarIcons(icons, findViewById(R.id.statusIcons));
            findStatusBarIcons(icons, findViewById(R.id.notificationIcons));
            return icons;
        }

        private void findStatusBarIcons(List<StatusBarIconView> icons, View v) {
            if (v instanceof StatusBarIconView) {
                icons.add((StatusBarIconView) v);
            } else if (v instanceof ViewGroup) {
                ViewGroup group = (ViewGroup) v;
                final int N = group.getChildCount();
                for (int i = 0; i < N; i++) {
                    findStatusBarIcons(icons, group.getChildAt(i));
                }
                mLeftSide.setAlpha(newAlpha);
                mRightSide.setAlpha(newAlpha);
            }
        }
    }
@@ -140,6 +141,7 @@ public class PhoneStatusBarView extends PanelBar {
        for (PanelView pv : mPanels) {
            pv.setRubberbandingEnabled(!mFullWidthNotifications);
        }
        mBarTransitions.init();
    }

    @Override