Export callback to receive seekbar change event from SeekBarPrefernce

- Export onSeekBarChangeListener callback to receive change event from parent
  - Update battery saver schedule trigger threshold after seekbar tounch
    ending instead of update it every time during dragging or touching

Bug: 236356020
Test: make RunSettingsRoboTests
Change-Id: Ifee7cd9e7cabfbec0817a4c28254228f885d6a8d
This commit is contained in:
Wesley Wang
2022-06-27 11:53:20 +08:00
parent 315c78b8e2
commit d3bead822c
4 changed files with 142 additions and 14 deletions

View File

@@ -64,6 +64,7 @@ public class SeekBarPreference extends RestrictedPreference
private CharSequence mOverrideSeekBarStateDescription;
private CharSequence mSeekBarContentDescription;
private CharSequence mSeekBarStateDescription;
private OnSeekBarChangeListener mOnSeekBarChangeListener;
public SeekBarPreference(
Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
@@ -101,6 +102,14 @@ public class SeekBarPreference extends RestrictedPreference
this(context, null);
}
/**
* A callback that notifies clients when the seekbar progress level has been
* changed. See {@link OnSeekBarChangeListener} for more info.
*/
public void setOnSeekBarChangeListener(OnSeekBarChangeListener listener) {
mOnSeekBarChangeListener = listener;
}
public void setShouldBlink(boolean shouldBlink) {
mShouldBlink = shouldBlink;
notifyChanged();
@@ -301,6 +310,9 @@ public class SeekBarPreference extends RestrictedPreference
if (fromUser && (mContinuousUpdates || !mTrackingTouch)) {
syncProgress(seekBar);
}
if (mOnSeekBarChangeListener != null) {
mOnSeekBarChangeListener.onProgressChanged(seekBar, progress, fromUser);
}
}
@Override
@@ -309,6 +321,9 @@ public class SeekBarPreference extends RestrictedPreference
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
.withView(CUJ_SETTINGS_SLIDER, seekBar)
.setTag(getKey()));
if (mOnSeekBarChangeListener != null) {
mOnSeekBarChangeListener.onStartTrackingTouch(seekBar);
}
}
@Override
@@ -317,6 +332,9 @@ public class SeekBarPreference extends RestrictedPreference
if (seekBar.getProgress() != mProgress) {
syncProgress(seekBar);
}
if (mOnSeekBarChangeListener != null) {
mOnSeekBarChangeListener.onStopTrackingTouch(seekBar);
}
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
}