Don't translate the notification content while scrolling
While scrolling we don't translate the notification content
anymore and only have it while expanding.
Test: add notifications, scroll
Bug: 32437839
Change-Id: I21037b40ec92c20f2cd775815dcf5d8399348223
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index 86c674f..a447d7b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -20,8 +20,6 @@
import android.content.res.Configuration;
import android.os.SystemProperties;
import android.util.AttributeSet;
-import android.util.FloatProperty;
-import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
@@ -287,49 +285,50 @@
}
float viewEnd = viewStart + fullHeight;
float fullTransitionAmount;
- float iconTransitonAmount;
- if (viewEnd >= getTranslationY() && (mAmbientState.isShadeExpanded()
+ float iconTransitionAmount;
+ float shelfStart = getTranslationY();
+ if (viewEnd >= shelfStart && (mAmbientState.isShadeExpanded()
|| (!row.isPinned() && !row.isHeadsUpAnimatingAway()))) {
- if (viewStart < getTranslationY()) {
+ if (viewStart < shelfStart) {
- float fullAmount = (getTranslationY() - viewStart) / fullHeight;
+ float fullAmount = (shelfStart - viewStart) / fullHeight;
float interpolatedAmount = Interpolators.ACCELERATE_DECELERATE.getInterpolation(
fullAmount);
interpolatedAmount = NotificationUtils.interpolate(
interpolatedAmount, fullAmount, expandAmount);
fullTransitionAmount = 1.0f - interpolatedAmount;
- iconTransitonAmount = (getTranslationY() - viewStart) / iconTransformDistance;
- iconTransitonAmount = Math.min(1.0f, iconTransitonAmount);
- iconTransitonAmount = 1.0f - iconTransitonAmount;
+ iconTransitionAmount = (shelfStart - viewStart) / iconTransformDistance;
+ iconTransitionAmount = Math.min(1.0f, iconTransitionAmount);
+ iconTransitionAmount = 1.0f - iconTransitionAmount;
} else {
fullTransitionAmount = 1.0f;
- iconTransitonAmount = 1.0f;
+ iconTransitionAmount = 1.0f;
}
} else {
fullTransitionAmount = 0.0f;
- iconTransitonAmount = 0.0f;
+ iconTransitionAmount = 0.0f;
}
- row.setContentTransformationAmount(iconTransitonAmount, isLastChild);
- updateIconPositioning(row, iconTransitonAmount, fullTransitionAmount);
+ updateIconPositioning(row, iconTransitionAmount, fullTransitionAmount, isLastChild);
return fullTransitionAmount;
}
private void updateIconPositioning(ExpandableNotificationRow row, float iconTransitionAmount,
- float fullTransitionAmount) {
+ float fullTransitionAmount, boolean isLastChild) {
StatusBarIconView icon = row.getEntry().expandedIcon;
NotificationIconContainer.IconState iconState = getIconState(icon);
if (iconState == null) {
return;
}
float clampedAmount = iconTransitionAmount > 0.5f ? 1.0f : 0.0f;
- boolean isLastChild = isLastChild(row);
if (clampedAmount == iconTransitionAmount) {
iconState.keepClampedPosition = false;
}
if (clampedAmount == fullTransitionAmount) {
iconState.useFullTransitionAmount = fullTransitionAmount == 0.0f;
+ iconState.translateContent = mMaxLayoutHeight - getTranslationY()
+ - getIntrinsicHeight() > 0;
}
float transitionAmount;
boolean needCannedAnimation = iconState.clampedAppearAmount == 1.0f
@@ -358,6 +357,10 @@
: transitionAmount;
iconState.clampedAppearAmount = clampedAmount;
setIconTransformationAmount(row, transitionAmount);
+ float contentTransformationAmount = isLastChild || iconState.translateContent
+ ? iconTransitionAmount
+ : 0.0f;
+ row.setContentTransformationAmount(contentTransformationAmount, isLastChild);
}
private boolean isLastChild(ExpandableNotificationRow row) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index 6650e72..a2c2fd7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -515,7 +515,9 @@
}
} else {
setIconAppearAmount(visibleState == STATE_ICON ? 1.0f : 0.0f);
- setDotAppearAmount(visibleState == STATE_DOT ? 1.0f : 0.0f);
+ setDotAppearAmount(visibleState == STATE_DOT ? 1.0f
+ : visibleState == STATE_ICON ? 2.0f
+ : 0.0f);
}
}
if (!runnableAdded) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
index 203d689..d323e4f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
@@ -411,6 +411,7 @@
public boolean needsCannedAnimation;
public boolean keepClampedPosition;
public boolean useFullTransitionAmount;
+ public boolean translateContent;
@Override
public void applyToView(View view) {