Invalidate NotificationChildrenContainer whenever NotificationHeaderViewWrapper.applyRoundnessAndInvalidate()

Test: manual test
Bug: 257000427
Change-Id: I8ce4567adc89552338fa6729320849fcf0b3b41c
This commit is contained in:
omarmt
2022-11-29 14:28:17 +00:00
committed by Omar Miatello
parent 446cb95aa1
commit 3e69219a37
2 changed files with 35 additions and 0 deletions

View File

@@ -71,6 +71,8 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper imple
private View mFeedbackIcon;
private boolean mIsLowPriority;
private boolean mTransformLowPriorityTitle;
private boolean mUseRoundnessSourceTypes;
private RoundnessChangedListener mRoundnessChangedListener;
protected NotificationHeaderViewWrapper(Context ctx, View view, ExpandableNotificationRow row) {
super(ctx, view, row);
@@ -117,6 +119,20 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper imple
return mRoundableState;
}
@Override
public void applyRoundnessAndInvalidate() {
if (mUseRoundnessSourceTypes && mRoundnessChangedListener != null) {
// We cannot apply the rounded corner to this View, so our parents (in drawChild()) will
// clip our canvas. So we should invalidate our parent.
mRoundnessChangedListener.applyRoundnessAndInvalidate();
}
Roundable.super.applyRoundnessAndInvalidate();
}
public void setOnRoundnessChangedListener(RoundnessChangedListener listener) {
mRoundnessChangedListener = listener;
}
protected void resolveHeaderViews() {
mIcon = mView.findViewById(com.android.internal.R.id.icon);
mHeaderText = mView.findViewById(com.android.internal.R.id.header_text);
@@ -344,6 +360,15 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper imple
}
}
/**
* Enable the support for rounded corner based on the SourceType
*
* @param enabled true if is supported
*/
public void useRoundnessSourceTypes(boolean enabled) {
mUseRoundnessSourceTypes = enabled;
}
/**
* Interface that handle the Roundness changes
*/

View File

@@ -396,6 +396,10 @@ public class NotificationChildrenContainer extends ViewGroup
getContext(),
mNotificationHeader,
mContainingNotification);
mNotificationHeaderWrapper.useRoundnessSourceTypes(mUseRoundnessSourceTypes);
if (mUseRoundnessSourceTypes) {
mNotificationHeaderWrapper.setOnRoundnessChangedListener(this::invalidate);
}
addView(mNotificationHeader, 0);
invalidate();
} else {
@@ -433,6 +437,12 @@ public class NotificationChildrenContainer extends ViewGroup
getContext(),
mNotificationHeaderLowPriority,
mContainingNotification);
mNotificationHeaderWrapperLowPriority.useRoundnessSourceTypes(
mUseRoundnessSourceTypes
);
if (mUseRoundnessSourceTypes) {
mNotificationHeaderWrapper.setOnRoundnessChangedListener(this::invalidate);
}
addView(mNotificationHeaderLowPriority, 0);
invalidate();
} else {