OSDN Git Service

Fix QS lock screen animation
authorJason Monk <jmonk@google.com>
Mon, 26 Jun 2017 15:22:21 +0000 (11:22 -0400)
committerJason Monk <jmonk@google.com>
Mon, 26 Jun 2017 17:50:54 +0000 (13:50 -0400)
Now that we have a footer, heights and clippings need to be adjusted
to be more accurate.
 - Clip QS within its layout box regardless of its y translation
 - Calculate height diffs correctly

Test: visual
Change-Id: Ic46996e342cd1000215aa9256da920a7856bb5a4
Fixes: 62489284

packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
packages/SystemUI/src/com/android/systemui/qs/QSFragment.java

index 6b50764..8f18800 100644 (file)
@@ -161,7 +161,8 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
 
         QSTileLayout tileLayout = mQsPanel.getTileLayout();
         mAllViews.add((View) tileLayout);
-        int heightDiff = mQsPanel.getBottom() - mQs.getHeader().getBottom()
+        int height = mQs.getView() != null ? mQs.getView().getMeasuredHeight() : 0;
+        int heightDiff = height - mQs.getHeader().getBottom()
                 + mQs.getHeader().getPaddingBottom();
         firstPageBuilder.addFloat(tileLayout, "translationY", heightDiff, 0);
 
index aa01c9e..39ef6c5 100644 (file)
@@ -256,7 +256,8 @@ public class QSFragment extends Fragment implements QS {
         }
         mHeader.setExpansion(mKeyguardShowing ? 1 : expansion);
         mFooter.setExpansion(mKeyguardShowing ? 1 : expansion);
-        int heightDiff = mQSPanel.getBottom() - mHeader.getBottom() + mHeader.getPaddingBottom();
+        int heightDiff = mQSPanel.getBottom() - mHeader.getBottom() + mHeader.getPaddingBottom()
+                + mFooter.getHeight();
         mQSPanel.setTranslationY(translationScaleY * heightDiff);
         mQSDetail.setFullyExpanded(expansion == 1);
 
@@ -265,7 +266,7 @@ public class QSFragment extends Fragment implements QS {
         }
 
         // Set bounds on the QS panel so it doesn't run over the header.
-        mQsBounds.top = (int) (mQSPanel.getHeight() * (1 - expansion));
+        mQsBounds.top = (int) -mQSPanel.getTranslationY();
         mQsBounds.right = mQSPanel.getWidth();
         mQsBounds.bottom = mQSPanel.getHeight();
         mQSPanel.setClipBounds(mQsBounds);