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) {