diff options
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(); } |