Merge "Reset the alpha value of ALL notification content views" into sc-v2-dev am: f49cf8a413

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16379053

Change-Id: I81dbc723a1ae9e9c33f416f521a761001f07cb94
This commit is contained in:
Jeff DeCew
2021-12-10 18:32:52 +00:00
committed by Automerger Merge Worker
2 changed files with 33 additions and 26 deletions

View File

@@ -579,14 +579,24 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
if (contentView.hasOverlappingRendering()) {
int layerType = contentAlpha == 0.0f || contentAlpha == 1.0f ? LAYER_TYPE_NONE
: LAYER_TYPE_HARDWARE;
int currentLayerType = contentView.getLayerType();
if (currentLayerType != layerType) {
contentView.setLayerType(layerType, null);
}
contentView.setLayerType(layerType, null);
}
contentView.setAlpha(contentAlpha);
// After updating the current view, reset all views.
if (contentAlpha == 1f) {
resetAllContentAlphas();
}
}
/**
* If a subclass's {@link #getContentView()} returns different views depending on state,
* this method is an opportunity to reset the alpha of ALL content views, not just the
* current one, which may prevent a content view that is temporarily hidden from being reset.
*
* This should setAlpha(1.0f) and setLayerType(LAYER_TYPE_NONE) for all content views.
*/
protected void resetAllContentAlphas() {}
@Override
protected void applyRoundness() {
super.applyRoundness();

View File

@@ -2130,15 +2130,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
public void setExpandAnimationRunning(boolean expandAnimationRunning) {
View contentView;
if (mIsSummaryWithChildren) {
contentView = mChildrenContainer;
} else {
contentView = getShowingLayout();
}
if (mGuts != null && mGuts.isExposed()) {
contentView = mGuts;
}
if (expandAnimationRunning) {
setAboveShelf(true);
mExpandAnimationRunning = true;
@@ -2151,9 +2142,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
if (mGuts != null) {
mGuts.setAlpha(1.0f);
}
if (contentView != null) {
contentView.setAlpha(1.0f);
}
resetAllContentAlphas();
setExtraWidthForClipping(0.0f);
if (mNotificationParent != null) {
mNotificationParent.setExtraWidthForClipping(0.0f);
@@ -2601,10 +2590,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
mPrivateLayout.animate().cancel();
if (mChildrenContainer != null) {
mChildrenContainer.animate().cancel();
mChildrenContainer.setAlpha(1f);
}
mPublicLayout.setAlpha(1f);
mPrivateLayout.setAlpha(1f);
resetAllContentAlphas();
mPublicLayout.setVisibility(mShowingPublic ? View.VISIBLE : View.INVISIBLE);
updateChildrenVisibility();
} else {
@@ -2631,7 +2618,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
.alpha(0f)
.setStartDelay(delay)
.setDuration(duration)
.withEndAction(() -> hiddenView.setVisibility(View.INVISIBLE));
.withEndAction(() -> {
hiddenView.setVisibility(View.INVISIBLE);
resetAllContentAlphas();
});
}
for (View showView : shownChildren) {
showView.setVisibility(View.VISIBLE);
@@ -2754,12 +2744,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
if (wasAppearing) {
// During the animation the visible view might have changed, so let's make sure all
// alphas are reset
if (mChildrenContainer != null) {
mChildrenContainer.setAlpha(1.0f);
}
for (NotificationContentView l : mLayouts) {
l.setAlpha(1.0f);
}
resetAllContentAlphas();
if (FADE_LAYER_OPTIMIZATION_ENABLED) {
setNotificationFaded(false);
} else {
@@ -2770,6 +2755,18 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
}
@Override
protected void resetAllContentAlphas() {
mPrivateLayout.setAlpha(1f);
mPrivateLayout.setLayerType(LAYER_TYPE_NONE, null);
mPublicLayout.setAlpha(1f);
mPublicLayout.setLayerType(LAYER_TYPE_NONE, null);
if (mChildrenContainer != null) {
mChildrenContainer.setAlpha(1f);
mChildrenContainer.setLayerType(LAYER_TYPE_NONE, null);
}
}
/** Gets the last value set with {@link #setNotificationFaded(boolean)} */
@Override
public boolean isNotificationFaded() {