Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +12 −5 Original line number Diff line number Diff line Loading @@ -1856,7 +1856,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView float interpolation = Interpolators.FAST_OUT_SLOW_IN.getInterpolation(params.getProgress()); int startClipTopAmount = params.getStartClipTopAmount(); if (mNotificationParent != null) { top -= mNotificationParent.getTranslationY(); float parentY = mNotificationParent.getTranslationY(); top -= parentY; mNotificationParent.setTranslationZ(translationZ); int parentStartClipTopAmount = params.getParentStartClipTopAmount(); if (startClipTopAmount != 0) { Loading @@ -1866,8 +1867,12 @@ public class ExpandableNotificationRow extends ActivatableNotificationView mNotificationParent.setClipTopAmount(clipTopAmount); } mNotificationParent.setExtraWidthForClipping(extraWidthForClipping); mNotificationParent.setMinimumHeightForClipping(params.getHeight() + mNotificationParent.getActualHeight()); float clipBottom = Math.max(params.getBottom(), parentY + mNotificationParent.getActualHeight() - mNotificationParent.getClipBottomAmount()); float clipTop = Math.min(params.getTop(), parentY); int minimumHeightForClipping = (int) (clipBottom - clipTop); mNotificationParent.setMinimumHeightForClipping(minimumHeightForClipping); } else if (startClipTopAmount != 0) { int clipTopAmount = (int) MathUtils.lerp(startClipTopAmount, 0, interpolation); setClipTopAmount(clipTopAmount); Loading Loading @@ -1922,6 +1927,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView private void setChildIsExpanding(boolean isExpanding) { mChildIsExpanding = isExpanding; updateClipping(); invalidate(); } @Override Loading @@ -1931,7 +1938,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView @Override protected boolean shouldClipToActualHeight() { return super.shouldClipToActualHeight() && !mExpandAnimationRunning && !mChildIsExpanding; return super.shouldClipToActualHeight() && !mExpandAnimationRunning; } @Override Loading Loading @@ -2827,7 +2834,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return true; } } else if (child == mChildrenContainer) { if (!mChildIsExpanding && (isClippingNeeded() || !hasNoRounding())) { if (isClippingNeeded() || !hasNoRounding()) { return true; } } else if (child instanceof NotificationGuts) { Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java +11 −7 Original line number Diff line number Diff line Loading @@ -78,8 +78,6 @@ public abstract class ExpandableOutlineView extends ExpandableView { protected boolean mShouldTranslateContents; private boolean mTopAmountRounded; private float mDistanceToTopRoundness = -1; private float mExtraWidthForClipping; private int mMinimumHeightForClipping = 0; private final ViewOutlineProvider mProvider = new ViewOutlineProvider() { @Override Loading Loading @@ -120,11 +118,13 @@ public abstract class ExpandableOutlineView extends ExpandableView { if (!mCustomOutline) { int translation = mShouldTranslateContents && !ignoreTranslation ? (int) getTranslation() : 0; left = Math.max(translation, 0); int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); left = Math.max(translation, 0) - halfExtraWidth; top = mClipTopAmount + mBackgroundTop; right = getWidth() + Math.min(translation, 0); right = getWidth() + halfExtraWidth + Math.min(translation, 0); bottom = Math.max(getActualHeight(), top); int intersectBottom = Math.max(getActualHeight() - mClipBottomAmount, top); int intersectBottom = Math.max(mMinimumHeightForClipping, Math.max(getActualHeight() - mClipBottomAmount, top)); if (bottom != intersectBottom) { if (clipRoundedToBottom) { bottom = intersectBottom; Loading Loading @@ -237,12 +237,16 @@ public abstract class ExpandableOutlineView extends ExpandableView { return result; } @Override public void setExtraWidthForClipping(float extraWidthForClipping) { mExtraWidthForClipping = extraWidthForClipping; super.setExtraWidthForClipping(extraWidthForClipping); invalidate(); } @Override public void setMinimumHeightForClipping(int minimumHeightForClipping) { mMinimumHeightForClipping = minimumHeightForClipping; super.setMinimumHeightForClipping(minimumHeightForClipping); invalidate(); } @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +16 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ public abstract class ExpandableView extends FrameLayout { private int mActualHeight; protected int mClipTopAmount; protected int mClipBottomAmount; protected int mMinimumHeightForClipping = 0; protected float mExtraWidthForClipping = 0; private boolean mDark; private ArrayList<View> mMatchParentViews = new ArrayList<View>(); private static Rect mClipRect = new Rect(); Loading Loading @@ -390,14 +392,26 @@ public abstract class ExpandableView extends FrameLayout { protected void updateClipping() { if (mClipToActualHeight && shouldClipToActualHeight()) { int top = getClipTopAmount(); mClipRect.set(0, top, getWidth(), Math.max(getActualHeight() + getExtraBottomPadding() - mClipBottomAmount, top)); int bottom = Math.max(Math.max(getActualHeight() + getExtraBottomPadding() - mClipBottomAmount, top), mMinimumHeightForClipping); int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); mClipRect.set(-halfExtraWidth, top, getWidth() + halfExtraWidth, bottom); setClipBounds(mClipRect); } else { setClipBounds(null); } } public void setMinimumHeightForClipping(int minimumHeightForClipping) { mMinimumHeightForClipping = minimumHeightForClipping; updateClipping(); } public void setExtraWidthForClipping(float extraWidthForClipping) { mExtraWidthForClipping = extraWidthForClipping; updateClipping(); } public float getHeaderVisibleAmount() { return 1.0f; } Loading packages/SystemUI/src/com/android/systemui/statusbar/NotificationEntryManager.java +13 −2 Original line number Diff line number Diff line Loading @@ -156,9 +156,16 @@ public class NotificationEntryManager implements Dumpable, NotificationInflater. } // Check if the notification is displaying the menu, if so slide notification back if (row.getProvider() != null && row.getProvider().isMenuVisible()) { if (isMenuVisible(row)) { row.animateTranslateNotification(0); return; } else if (row.isChildInGroup() && isMenuVisible(row.getNotificationParent())) { row.getNotificationParent().animateTranslateNotification(0); return; } else if (row.isSummaryWithChildren() && row.areChildrenExpanded()) { // We never want to open the app directly if the user clicks in between // the notifications. return; } // Mark notification for one frame. Loading @@ -168,6 +175,10 @@ public class NotificationEntryManager implements Dumpable, NotificationInflater. mCallback.onNotificationClicked(sbn, row); } private boolean isMenuVisible(ExpandableNotificationRow row) { return row.getProvider() != null && row.getProvider().isMenuVisible(); } public void register(ExpandableNotificationRow row, StatusBarNotification sbn) { Notification notification = sbn.getNotification(); if (notification.contentIntent != null || notification.fullScreenIntent != null) { Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java +4 −0 Original line number Diff line number Diff line Loading @@ -278,6 +278,10 @@ public class ActivityLaunchAnimator { return top; } public int getBottom() { return bottom; } public int getWidth() { return right - left; } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +12 −5 Original line number Diff line number Diff line Loading @@ -1856,7 +1856,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView float interpolation = Interpolators.FAST_OUT_SLOW_IN.getInterpolation(params.getProgress()); int startClipTopAmount = params.getStartClipTopAmount(); if (mNotificationParent != null) { top -= mNotificationParent.getTranslationY(); float parentY = mNotificationParent.getTranslationY(); top -= parentY; mNotificationParent.setTranslationZ(translationZ); int parentStartClipTopAmount = params.getParentStartClipTopAmount(); if (startClipTopAmount != 0) { Loading @@ -1866,8 +1867,12 @@ public class ExpandableNotificationRow extends ActivatableNotificationView mNotificationParent.setClipTopAmount(clipTopAmount); } mNotificationParent.setExtraWidthForClipping(extraWidthForClipping); mNotificationParent.setMinimumHeightForClipping(params.getHeight() + mNotificationParent.getActualHeight()); float clipBottom = Math.max(params.getBottom(), parentY + mNotificationParent.getActualHeight() - mNotificationParent.getClipBottomAmount()); float clipTop = Math.min(params.getTop(), parentY); int minimumHeightForClipping = (int) (clipBottom - clipTop); mNotificationParent.setMinimumHeightForClipping(minimumHeightForClipping); } else if (startClipTopAmount != 0) { int clipTopAmount = (int) MathUtils.lerp(startClipTopAmount, 0, interpolation); setClipTopAmount(clipTopAmount); Loading Loading @@ -1922,6 +1927,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView private void setChildIsExpanding(boolean isExpanding) { mChildIsExpanding = isExpanding; updateClipping(); invalidate(); } @Override Loading @@ -1931,7 +1938,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView @Override protected boolean shouldClipToActualHeight() { return super.shouldClipToActualHeight() && !mExpandAnimationRunning && !mChildIsExpanding; return super.shouldClipToActualHeight() && !mExpandAnimationRunning; } @Override Loading Loading @@ -2827,7 +2834,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return true; } } else if (child == mChildrenContainer) { if (!mChildIsExpanding && (isClippingNeeded() || !hasNoRounding())) { if (isClippingNeeded() || !hasNoRounding()) { return true; } } else if (child instanceof NotificationGuts) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java +11 −7 Original line number Diff line number Diff line Loading @@ -78,8 +78,6 @@ public abstract class ExpandableOutlineView extends ExpandableView { protected boolean mShouldTranslateContents; private boolean mTopAmountRounded; private float mDistanceToTopRoundness = -1; private float mExtraWidthForClipping; private int mMinimumHeightForClipping = 0; private final ViewOutlineProvider mProvider = new ViewOutlineProvider() { @Override Loading Loading @@ -120,11 +118,13 @@ public abstract class ExpandableOutlineView extends ExpandableView { if (!mCustomOutline) { int translation = mShouldTranslateContents && !ignoreTranslation ? (int) getTranslation() : 0; left = Math.max(translation, 0); int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); left = Math.max(translation, 0) - halfExtraWidth; top = mClipTopAmount + mBackgroundTop; right = getWidth() + Math.min(translation, 0); right = getWidth() + halfExtraWidth + Math.min(translation, 0); bottom = Math.max(getActualHeight(), top); int intersectBottom = Math.max(getActualHeight() - mClipBottomAmount, top); int intersectBottom = Math.max(mMinimumHeightForClipping, Math.max(getActualHeight() - mClipBottomAmount, top)); if (bottom != intersectBottom) { if (clipRoundedToBottom) { bottom = intersectBottom; Loading Loading @@ -237,12 +237,16 @@ public abstract class ExpandableOutlineView extends ExpandableView { return result; } @Override public void setExtraWidthForClipping(float extraWidthForClipping) { mExtraWidthForClipping = extraWidthForClipping; super.setExtraWidthForClipping(extraWidthForClipping); invalidate(); } @Override public void setMinimumHeightForClipping(int minimumHeightForClipping) { mMinimumHeightForClipping = minimumHeightForClipping; super.setMinimumHeightForClipping(minimumHeightForClipping); invalidate(); } @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +16 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ public abstract class ExpandableView extends FrameLayout { private int mActualHeight; protected int mClipTopAmount; protected int mClipBottomAmount; protected int mMinimumHeightForClipping = 0; protected float mExtraWidthForClipping = 0; private boolean mDark; private ArrayList<View> mMatchParentViews = new ArrayList<View>(); private static Rect mClipRect = new Rect(); Loading Loading @@ -390,14 +392,26 @@ public abstract class ExpandableView extends FrameLayout { protected void updateClipping() { if (mClipToActualHeight && shouldClipToActualHeight()) { int top = getClipTopAmount(); mClipRect.set(0, top, getWidth(), Math.max(getActualHeight() + getExtraBottomPadding() - mClipBottomAmount, top)); int bottom = Math.max(Math.max(getActualHeight() + getExtraBottomPadding() - mClipBottomAmount, top), mMinimumHeightForClipping); int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); mClipRect.set(-halfExtraWidth, top, getWidth() + halfExtraWidth, bottom); setClipBounds(mClipRect); } else { setClipBounds(null); } } public void setMinimumHeightForClipping(int minimumHeightForClipping) { mMinimumHeightForClipping = minimumHeightForClipping; updateClipping(); } public void setExtraWidthForClipping(float extraWidthForClipping) { mExtraWidthForClipping = extraWidthForClipping; updateClipping(); } public float getHeaderVisibleAmount() { return 1.0f; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/NotificationEntryManager.java +13 −2 Original line number Diff line number Diff line Loading @@ -156,9 +156,16 @@ public class NotificationEntryManager implements Dumpable, NotificationInflater. } // Check if the notification is displaying the menu, if so slide notification back if (row.getProvider() != null && row.getProvider().isMenuVisible()) { if (isMenuVisible(row)) { row.animateTranslateNotification(0); return; } else if (row.isChildInGroup() && isMenuVisible(row.getNotificationParent())) { row.getNotificationParent().animateTranslateNotification(0); return; } else if (row.isSummaryWithChildren() && row.areChildrenExpanded()) { // We never want to open the app directly if the user clicks in between // the notifications. return; } // Mark notification for one frame. Loading @@ -168,6 +175,10 @@ public class NotificationEntryManager implements Dumpable, NotificationInflater. mCallback.onNotificationClicked(sbn, row); } private boolean isMenuVisible(ExpandableNotificationRow row) { return row.getProvider() != null && row.getProvider().isMenuVisible(); } public void register(ExpandableNotificationRow row, StatusBarNotification sbn) { Notification notification = sbn.getNotification(); if (notification.contentIntent != null || notification.fullScreenIntent != null) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java +4 −0 Original line number Diff line number Diff line Loading @@ -278,6 +278,10 @@ public class ActivityLaunchAnimator { return top; } public int getBottom() { return bottom; } public int getWidth() { return right - left; } Loading