diff options
| author | 2022-09-15 04:34:38 +0000 | |
|---|---|---|
| committer | 2022-09-15 04:34:38 +0000 | |
| commit | e56320b84b5a3ae4dfd95d44f7f932af0ef114df (patch) | |
| tree | 70d1b8c82f2655995932dc62894d60142ba9fbf1 | |
| parent | b3b9a1d091918990fa783f035122a101e8459ba7 (diff) | |
| parent | f1fd806271a7c74cbf719ddfa696092d00b9a7ea (diff) | |
Merge changes Ibf05654c,I85cef48f into tm-qpr-dev
* changes:
  Reduce brightness-slider bottom margin to 16dp, as per spec
  Implement brightness slider unfurl in QQS->QS translation according to spec.
| -rw-r--r-- | packages/SystemUI/res/values/dimens.xml | 2 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java | 85 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QSFragment.java | 7 | 
3 files changed, 51 insertions, 43 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 8089bb1bf924..e0264c30eeec 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -520,7 +520,7 @@      <dimen name="qs_tile_margin_vertical">@dimen/qs_tile_margin_horizontal</dimen>      <dimen name="qs_tile_margin_top_bottom">4dp</dimen>      <dimen name="qs_brightness_margin_top">8dp</dimen> -    <dimen name="qs_brightness_margin_bottom">24dp</dimen> +    <dimen name="qs_brightness_margin_bottom">16dp</dimen>      <dimen name="qqs_layout_margin_top">16dp</dimen>      <dimen name="qqs_layout_padding_bottom">24dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index 920f4634abe2..e1289a61d45d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -99,7 +99,7 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener      // slider, as well as animating the alpha of the QS tile layout (as we are tracking QQS tiles)      @Nullable      private TouchAnimator mFirstPageAnimator; -    // TranslationX animator for QQS/QS tiles +    // TranslationX animator for QQS/QS tiles. Only used on the first page!      private TouchAnimator mTranslationXAnimator;      // TranslationY animator for QS tiles (and their components) in the first page      private TouchAnimator mTranslationYAnimator; @@ -107,13 +107,14 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener      private TouchAnimator mQQSTranslationYAnimator;      // Animates alpha of permanent views (QS tile layout, QQS tiles) when not in first page      private TouchAnimator mNonfirstPageAlphaAnimator; -    // TranslatesY the QS Tile layout using QS.getHeightDiff() -    private TouchAnimator mQSTileLayoutTranslatorAnimator;      // This animates fading of media player      private TouchAnimator mAllPagesDelayedAnimator; -    // Animator for brightness slider(s) +    // Brightness slider translation driver, uses mQSExpansionPathInterpolator.yInterpolator      @Nullable -    private TouchAnimator mBrightnessAnimator; +    private TouchAnimator mBrightnessTranslationAnimator; +    // Brightness slider opacity driver. Uses linear interpolator. +    @Nullable +    private TouchAnimator mBrightnessOpacityAnimator;      // Animator for Footer actions in QQS      private TouchAnimator mQQSFooterActionsAnimator;      // Height animator for QQS tiles (height changing from QQS size to QS size) @@ -137,7 +138,6 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener      private final QSTileHost mHost;      private final Executor mExecutor;      private boolean mShowCollapsedOnKeyguard; -    private boolean mTranslateWhileExpanding;      private int mQQSTop;      private int[] mTmpLoc1 = new int[2]; @@ -298,13 +298,6 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener          QSTileLayout tileLayout = mQsPanelController.getTileLayout();          mAllViews.add((View) tileLayout); -        int heightDiff = mQs.getHeightDiff(); -        if (!mTranslateWhileExpanding) { -            heightDiff *= SHORT_PARALLAX_AMOUNT; -        } -        mQSTileLayoutTranslatorAnimator = new Builder() -                .addFloat(tileLayout, "translationY", heightDiff, 0) -                .build();          mLastQQSTileHeight = 0; @@ -407,12 +400,7 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener                      mAnimatedQsViews.add(tileView);                      mAllViews.add(quickTileView);                      mAllViews.add(quickTileView.getSecondaryLabel()); -                } else if (isIconInAnimatedRow(count)) { - -                    firstPageBuilder.addFloat(tileView, "translationY", -heightDiff, 0); - -                    mAllViews.add(tileIcon); -                } else { +                } else if (!isIconInAnimatedRow(count)) {                      // Pretend there's a corresponding QQS tile (for the position) that we are                      // expanding from.                      SideLabelTileLayout qqsLayout = @@ -442,7 +430,7 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener              }          } -        animateBrightnessSlider(firstPageBuilder); +        animateBrightnessSlider();          mFirstPageAnimator = firstPageBuilder                  // Fade in the tiles/labels as we reach the final position. @@ -568,7 +556,9 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener          return new Pair<>(animator, builder.build());      } -    private void animateBrightnessSlider(Builder firstPageBuilder) { +    private void animateBrightnessSlider() { +        mBrightnessTranslationAnimator = null; +        mBrightnessOpacityAnimator = null;          View qsBrightness = mQsPanelController.getBrightnessView();          View qqsBrightness = mQuickQSPanelController.getBrightnessView();          if (qqsBrightness != null && qqsBrightness.getVisibility() == View.VISIBLE) { @@ -576,25 +566,45 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener              mAnimatedQsViews.add(qsBrightness);              mAllViews.add(qqsBrightness);              int translationY = getRelativeTranslationY(qsBrightness, qqsBrightness); -            mBrightnessAnimator = new Builder() +            mBrightnessTranslationAnimator = new Builder()                      // we need to animate qs brightness even if animation will not be visible,                      // as we might start from sliderScaleY set to 0.3 if device was in collapsed QS                      // portrait orientation before                      .addFloat(qsBrightness, "sliderScaleY", 0.3f, 1)                      .addFloat(qqsBrightness, "translationY", 0, translationY) +                    .setInterpolator(mQSExpansionPathInterpolator.getYInterpolator())                      .build();          } else if (qsBrightness != null) { -            firstPageBuilder.addFloat(qsBrightness, "translationY", -                    qsBrightness.getMeasuredHeight() * 0.5f, 0); -            mBrightnessAnimator = new Builder() +            // The brightness slider's visible bottom edge must maintain a constant margin from the +            // QS tiles during transition. Thus the slider must (1) perform the same vertical +            // translation as the tiles, and (2) compensate for the slider scaling. + +            // For (1), compute the distance via the vertical distance between QQS and QS tile +            // layout top. +            View quickSettingsRootView = mQs.getView(); +            View qsTileLayout = (View) mQsPanelController.getTileLayout(); +            View qqsTileLayout = (View) mQuickQSPanelController.getTileLayout(); +            getRelativePosition(mTmpLoc1, qsTileLayout, quickSettingsRootView); +            getRelativePosition(mTmpLoc2, qqsTileLayout, quickSettingsRootView); +            int tileMovement = mTmpLoc2[1] - mTmpLoc1[1]; + +            // For (2), the slider scales to the vertical center, so compensate with half the +            // height at full collapse. +            float scaleCompensation = qsBrightness.getMeasuredHeight() * 0.5f; +            mBrightnessTranslationAnimator = new Builder() +                    .addFloat(qsBrightness, "translationY", scaleCompensation + tileMovement, 0) +                    .addFloat(qsBrightness, "sliderScaleY", 0, 1) +                    .setInterpolator(mQSExpansionPathInterpolator.getYInterpolator()) +                    .build(); + +            // While the slider's position and unfurl is animated throughouth the motion, the +            // fade in happens independently. +            mBrightnessOpacityAnimator = new Builder()                      .addFloat(qsBrightness, "alpha", 0, 1) -                    .addFloat(qsBrightness, "sliderScaleY", 0.3f, 1) -                    .setInterpolator(Interpolators.ALPHA_IN) -                    .setStartDelay(0.3f) +                    .setStartDelay(0.2f) +                    .setEndDelay(1 - 0.5f)                      .build();              mAllViews.add(qsBrightness); -        } else { -            mBrightnessAnimator = null;          }      } @@ -676,11 +686,13 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener          if (mQQSTileHeightAnimator != null) {              mQQSTileHeightAnimator.setPosition(position);          } -        mQSTileLayoutTranslatorAnimator.setPosition(position);          mQQSTranslationYAnimator.setPosition(position);          mAllPagesDelayedAnimator.setPosition(position); -        if (mBrightnessAnimator != null) { -            mBrightnessAnimator.setPosition(position); +        if (mBrightnessOpacityAnimator != null) { +            mBrightnessOpacityAnimator.setPosition(position); +        } +        if (mBrightnessTranslationAnimator != null) { +            mBrightnessTranslationAnimator.setPosition(position);          }          if (mQQSFooterActionsAnimator != null) {              mQQSFooterActionsAnimator.setPosition(position); @@ -774,13 +786,6 @@ public class QSAnimator implements QSHost.Callback, PagedTileLayout.PageListener          setCurrentPosition();      }; -    /** -     * True whe QS will be pulled from the top, false when it will be clipped. -     */ -    public void setTranslateWhileExpanding(boolean shouldTranslate) { -        mTranslateWhileExpanding = shouldTranslate; -    } -      private static class HeightExpansionAnimator {          private final List<View> mViews = new ArrayList<>();          private final ValueAnimator mAnimator; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 90fa94c8435a..7b27cf45979f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -573,7 +573,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca      @Override      public void setInSplitShade(boolean inSplitShade) {          mInSplitShade = inSplitShade; -        mQSAnimator.setTranslateWhileExpanding(inSplitShade);          updateShowCollapsedOnKeyguard();          updateQsState();      } @@ -669,7 +668,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca          mQSPanelController.setRevealExpansion(expansion);          mQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation);          mQuickQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation); -        mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff); + +        float qsScrollViewTranslation = +                onKeyguard && !mShowCollapsedOnKeyguard ? panelTranslationY : 0; +        mQSPanelScrollView.setTranslationY(qsScrollViewTranslation); +          if (fullyCollapsed) {              mQSPanelScrollView.setScrollY(0);          }  |