Introduced overscrolling for the panel expansion

Notifications now overscroll in a rubberbandy motion when expanding.

Bug: 14486987
Change-Id: I5ad47027adab10d6996e70f489e8c2550220e224
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 8631e3a..7c1f2cf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -38,6 +38,7 @@
 public class PanelView extends FrameLayout {
     public static final boolean DEBUG = PanelBar.DEBUG;
     public static final String TAG = PanelView.class.getSimpleName();
+    protected float mOverExpansion;
 
     private final void logf(String fmt, Object... args) {
         Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
@@ -403,6 +404,11 @@
     public void setExpandedHeightInternal(float h) {
         float fh = getMaxPanelHeight();
         mExpandedHeight = Math.min(fh, h);
+        float overExpansion = h - fh;
+        overExpansion = Math.max(0, overExpansion);
+        if (overExpansion != mOverExpansion) {
+            onOverExpansionChanged(overExpansion);
+        }
 
         if (DEBUG) {
             logf("setExpansion: height=%.1f fh=%.1f tracking=%s", h, fh, mTracking ? "T" : "f");
@@ -412,6 +418,10 @@
         mExpandedFraction = Math.min(1f, (fh == 0) ? 0 : h / fh);
     }
 
+    protected void onOverExpansionChanged(float overExpansion) {
+        mOverExpansion = overExpansion;
+    }
+
     protected void onHeightUpdated(float expandedHeight) {
         requestLayout();
     }