Fix QS lock screen animation

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
This commit is contained in:
Jason Monk
2017-06-26 11:22:21 -04:00
parent 6a651f81b5
commit bdefffd1e8
2 changed files with 5 additions and 3 deletions

View 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);

View 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);