Fix density slider not updating density when dragged.

Flag: com.android.settings.flags.display_size_connected_display_setting
Test: atest ExternalDisplayPreferenceFragmentTest
Bug: 401603093
Change-Id: Ie27a6f50dd9869b3d00a197cadfb24bf76901828
This commit is contained in:
Ebru Kurnaz
2025-03-12 10:26:20 +00:00
parent 2b47ca1608
commit e478bf5797

View File

@@ -81,9 +81,11 @@ public class ExternalDisplaySizePreference extends AccessibilitySeekBarPreferenc
implements SeekBar.OnSeekBarChangeListener {
private static final long MIN_COMMIT_INTERVAL_MS = 800;
private static final long CHANGE_BY_BUTTON_DELAY_MS = 300;
private static final long CHANGE_BY_SEEKBAR_DELAY_MS = 100;
private final DisplaySizeData mDisplaySizeData;
private int mLastDisplayProgress;
private long mLastCommitTime;
private boolean mSeekByTouch;
ExternalDisplaySizePreferenceStateHandler(DisplaySizeData displaySizeData) {
mDisplaySizeData = displaySizeData;
}
@@ -99,8 +101,7 @@ public class ExternalDisplaySizePreference extends AccessibilitySeekBarPreferenc
mLastCommitTime = SystemClock.elapsedRealtime();
}
private void postCommitDelayed() {
var commitDelayMs = CHANGE_BY_BUTTON_DELAY_MS;
private void postCommitDelayed(long commitDelayMs) {
if (SystemClock.elapsedRealtime() - mLastCommitTime < MIN_COMMIT_INTERVAL_MS) {
commitDelayMs += MIN_COMMIT_INTERVAL_MS;
}
@@ -112,13 +113,18 @@ public class ExternalDisplaySizePreference extends AccessibilitySeekBarPreferenc
@Override
public void onProgressChanged(@NonNull SeekBar seekBar, int i, boolean b) {
postCommitDelayed();
if (!mSeekByTouch) postCommitDelayed(CHANGE_BY_BUTTON_DELAY_MS);
}
@Override
public void onStartTrackingTouch(@NonNull SeekBar seekBar) {}
public void onStartTrackingTouch(@NonNull SeekBar seekBar) {
mSeekByTouch = true;
}
@Override
public void onStopTrackingTouch(@NonNull SeekBar seekBar) {}
public void onStopTrackingTouch(@NonNull SeekBar seekBar) {
mSeekByTouch = false;
postCommitDelayed(CHANGE_BY_SEEKBAR_DELAY_MS);
}
}
}