diff options
| author | 2018-09-20 13:00:17 -0400 | |
|---|---|---|
| committer | 2018-09-27 10:11:55 -0400 | |
| commit | b9dc0c7b613e4b5bbb191ef2a9b167c910ef9c36 (patch) | |
| tree | 40cea95da9db9798807a62e886ea536d4ae28227 | |
| parent | e0ef793d0af5fa08a2f9ff49e8a810b181131ecf (diff) | |
Brightness slider doesn't jump when panel is open
Slider starts listening and is set to current value as soon as QSPanel
starts opening.
Slider animation duration is proportional to change value.
QSPanel decides when to listen based on QSFragment listening and
expanded variables.
Test: manual
Change-Id: Ie310da4942b57d8016da0986071445b1cd3349df
Fixes: 78209596
3 files changed, 22 insertions, 12 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index c36cdf6ac262..19cbcb8ae8ac 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -256,7 +256,7 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks { public void setExpanded(boolean expanded) { if (DEBUG) Log.d(TAG, "setExpanded " + expanded); mQsExpanded = expanded; - mQSPanel.setListening(mListening && mQsExpanded); + mQSPanel.setListening(mListening, mQsExpanded); updateQsState(); } @@ -287,8 +287,7 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks { mListening = listening; mHeader.setListening(listening); mFooter.setListening(listening); - mQSPanel.setListening(mListening && mQsExpanded); - mQSPanel.getFooter().setListening(listening); + mQSPanel.setListening(mListening, mQsExpanded); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 7a57fdde6712..8b2e1d5eef64 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -353,12 +353,21 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne if (mListening) { refreshAllTiles(); } - if (mBrightnessView.getVisibility() == View.VISIBLE) { - if (listening) { - mBrightnessController.registerCallbacks(); - } else { - mBrightnessController.unregisterCallbacks(); - } + } + + public void setListening(boolean listening, boolean expanded) { + setListening(listening && expanded); + getFooter().setListening(listening); + // Set the listening as soon as the QS fragment starts listening regardless of the expansion, + // so it will update the current brightness before the slider is visible. + setBrightnessListening(listening); + } + + public void setBrightnessListening(boolean listening) { + if (listening) { + mBrightnessController.registerCallbacks(); + } else { + mBrightnessController.unregisterCallbacks(); } } diff --git a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java index 117872558f7f..3ed5f70b8915 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java +++ b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java @@ -460,7 +460,7 @@ public class BrightnessController implements ToggleSlider.Listener { private void animateSliderTo(int target) { if (!mControlValueInitialized) { - // Don't animate the first value since it's default state isn't meaningful to users. + // Don't animate the first value since its default state isn't meaningful to users. mControl.setValue(target); mControlValueInitialized = true; } @@ -470,10 +470,12 @@ public class BrightnessController implements ToggleSlider.Listener { mSliderAnimator = ValueAnimator.ofInt(mControl.getValue(), target); mSliderAnimator.addUpdateListener((ValueAnimator animation) -> { mExternalChange = true; - mControl.setValue((int)animation.getAnimatedValue()); + mControl.setValue((int) animation.getAnimatedValue()); mExternalChange = false; }); - mSliderAnimator.setDuration(SLIDER_ANIMATION_DURATION); + final long animationDuration = SLIDER_ANIMATION_DURATION * Math.abs( + mControl.getValue() - target) / GAMMA_SPACE_MAX; + mSliderAnimator.setDuration(animationDuration); mSliderAnimator.start(); } |