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

Commit 3ec28cb7 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Notification icons on AOD status bar"

parents f06f3720 23a8d3bb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -844,7 +844,7 @@
    <dimen name="burn_in_prevention_offset_y">50dp</dimen>

    <!-- The maximum offset in either direction that icons move to prevent burn-in on AOD. -->
    <dimen name="default_burn_in_prevention_offset">5dp</dimen>
    <dimen name="default_burn_in_prevention_offset">15dp</dimen>

    <dimen name="corner_size">8dp</dimen>
    <dimen name="top_padding">0dp</dimen>
+4 −24
Original line number Diff line number Diff line
@@ -43,13 +43,13 @@ import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.phone.NotificationIconContainer;
import com.android.systemui.statusbar.notification.stack.AmbientState;
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.StackScrollState;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.statusbar.phone.NotificationIconContainer;

/**
 * A notification shelf view that is placed inside the notification scroller. It manages the
@@ -58,7 +58,6 @@ import com.android.systemui.statusbar.notification.stack.ViewState;
public class NotificationShelf extends ActivatableNotificationView implements
        View.OnLayoutChangeListener {

    public static final boolean SHOW_AMBIENT_ICONS = true;
    private static final boolean USE_ANIMATIONS_WHEN_OPENING =
            SystemProperties.getBoolean("debug.icon_opening_animations", true);
    private static final boolean ICON_ANMATIONS_WHILE_SCROLLING
@@ -176,21 +175,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
        updateInteractiveness();
    }

    public void fadeInTranslating() {
        mShelfIcons.setTranslationY(-mShelfAppearTranslation);
        mShelfIcons.setAlpha(0);
        mShelfIcons.animate()
                .setInterpolator(Interpolators.DECELERATE_QUINT)
                .translationY(0)
                .setDuration(SHELF_IN_TRANSLATION_DURATION)
                .start();
        mShelfIcons.animate()
                .alpha(1)
                .setInterpolator(Interpolators.LINEAR)
                .setDuration(SHELF_IN_TRANSLATION_DURATION)
                .start();
    }

    @Override
    protected View getContentView() {
        return mShelfIcons;
@@ -417,18 +401,16 @@ public class NotificationShelf extends ActivatableNotificationView implements
        float maxTop = row.getTranslationY();
        StatusBarIconView icon = row.getEntry().expandedIcon;
        float shelfIconPosition = getTranslationY() + icon.getTop() + icon.getTranslationY();
        if (shelfIconPosition < maxTop && !mAmbientState.isDark()) {
        if (shelfIconPosition < maxTop) {
            int top = (int) (maxTop - shelfIconPosition);
            Rect clipRect = new Rect(0, top, icon.getWidth(), Math.max(top, icon.getHeight()));
            icon.setClipBounds(clipRect);
        } else {
            icon.setClipBounds(null);
        }
    }

    private void updateContinuousClipping(final ExpandableNotificationRow row) {
        StatusBarIconView icon = row.getEntry().expandedIcon;
        boolean needsContinuousClipping = ViewState.isAnimatingY(icon) && !mAmbientState.isDark();
        boolean needsContinuousClipping = ViewState.isAnimatingY(icon);
        boolean isContinuousClipping = icon.getTag(TAG_CONTINUOUS_CLIPPING) != null;
        if (needsContinuousClipping && !isContinuousClipping) {
            final ViewTreeObserver observer = icon.getViewTreeObserver();
@@ -619,9 +601,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
            iconState.translateContent = false;
        }
        float transitionAmount;
        if (mAmbientState.getDarkAmount() > 0 && !row.isInShelf()) {
            transitionAmount = mAmbientState.isFullyDark() ? 1 : 0;
        } else if (isLastChild || !USE_ANIMATIONS_WHEN_OPENING || iconState.useFullTransitionAmount
        if (isLastChild || !USE_ANIMATIONS_WHEN_OPENING || iconState.useFullTransitionAmount
                || iconState.useLinearTransitionAmount) {
            transitionAmount = iconTransitionAmount;
        } else {
+0 −4
Original line number Diff line number Diff line
@@ -206,10 +206,6 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        mIconScale = SYSTEM_ICON_SCALE;
    }

    public float getIconScaleFullyDark() {
        return (float) mStatusBarIconDrawingSizeDark / mStatusBarIconDrawingSize;
    }

    public float getIconScale() {
        return mIconScale;
    }
+1 −2
Original line number Diff line number Diff line
@@ -82,7 +82,6 @@ import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin.MenuItem;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.notification.AboveShelfChangedListener;
@@ -1501,7 +1500,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView

    private void updateIconVisibilities() {
        boolean visible = isChildInGroup()
                || (isBelowSpeedBump() && !NotificationShelf.SHOW_AMBIENT_ICONS)
                || isBelowSpeedBump()
                || mIconsVisible;
        for (NotificationContentView l : mLayouts) {
            l.setIconsVisible(visible);
+24 −38
Original line number Diff line number Diff line
@@ -113,7 +113,6 @@ import com.android.systemui.statusbar.notification.row.NotificationGuts;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.row.NotificationSnooze;
import com.android.systemui.statusbar.notification.row.StackScrollerDecorView;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.HeadsUpTouchHelper;
@@ -673,21 +672,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd

    @ShadeViewRefactor(RefactorComponent.DECORATOR)
    private void drawBackground(Canvas canvas) {
        final int lockScreenLeft = mSidePaddings;
        final int lockScreenRight = getWidth() - mSidePaddings;
        final int lockScreenTop = mCurrentBounds.top;
        final int lockScreenBottom = mCurrentBounds.bottom;
        final int darkLeft = getWidth() / 2;
        final int darkTop = mRegularTopPadding;

        if (mAmbientState.hasPulsingNotifications()) {
            // No divider, we have a notification icon instead
        } else if (mAmbientState.isFullyDark()) {
            // Only draw divider on AOD if we actually have notifications
            if (mFirstVisibleBackgroundChild != null) {
                canvas.drawRect(darkLeft, darkTop, darkLeft, darkTop, mBackgroundPaint);
            }
        } else {
        int lockScreenLeft = mSidePaddings;
        int lockScreenRight = getWidth() - mSidePaddings;
        int lockScreenTop = mCurrentBounds.top;
        int lockScreenBottom = mCurrentBounds.bottom;
        int darkLeft = getWidth() / 2;
        int darkTop = mRegularTopPadding;

        float yProgress = 1 - mInterpolatedDarkAmount;
        float xProgress = mDarkXInterpolator.getInterpolation(
                (1 - mLinearDarkAmount) * mBackgroundXFactor);
@@ -703,7 +694,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
                    mBackgroundAnimationRect.right, mBackgroundAnimationRect.bottom,
                    mCornerRadius, mCornerRadius, mBackgroundPaint);
        }
        }

        updateClipping();
    }

@@ -1110,14 +1101,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd

    @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
    public void updateClipping() {
        boolean animatingClipping = mInterpolatedDarkAmount > 0 && mInterpolatedDarkAmount < 1;
        boolean clipped = mRequestedClipBounds != null && !mInHeadsUpPinnedMode
                && !mHeadsUpAnimatingAway;
        if (mIsClipped != clipped) {
            mIsClipped = clipped;
        }

        if (animatingClipping) {
        if (mAmbientState.isDarkAtAll()) {
            setClipBounds(mBackgroundAnimationRect);
        } else if (clipped) {
            setClipBounds(mRequestedClipBounds);
@@ -4257,13 +4247,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
        boolean nowDarkAtAll = mAmbientState.isDarkAtAll();
        if (nowFullyDark != wasFullyDark) {
            updateContentHeight();
            DozeParameters dozeParameters = DozeParameters.getInstance(mContext);
            if (nowFullyDark && dozeParameters.shouldControlScreenOff()) {
                mShelf.fadeInTranslating();
        }
        if (mIconAreaController != null) {
                mIconAreaController.setFullyDark(nowFullyDark);
            }
            mIconAreaController.setDarkAmount(interpolatedDarkAmount);
        }
        if (!wasDarkAtAll && nowDarkAtAll) {
            resetExposedMenuView(true /* animate */, true /* animate */);
Loading