Fix the preview should keep the same layer after font or display size change.

Bug: 259213786
Test: make RunSettingsRoboTests ROBOTEST_FILTER=TextReadingPreviewPreferenceTest
Change-Id: Ifc0047e47806662174712bb8628193bee906b384
This commit is contained in:
Peter Liang
2022-12-05 22:00:46 +08:00
parent 2af12acaed
commit f5c7c52ca1
4 changed files with 70 additions and 10 deletions

View File

@@ -64,7 +64,12 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
static final String RESET_KEY = "reset";
private static final String PREVIEW_KEY = "preview";
private static final String NEED_RESET_SETTINGS = "need_reset_settings";
private static final String LAST_PREVIEW_INDEX = "last_preview_index";
private static final int UNKNOWN_INDEX = -1;
private FontWeightAdjustmentPreferenceController mFontWeightAdjustmentController;
private TextReadingPreviewController mPreviewController;
private int mLastPreviewIndex = UNKNOWN_INDEX;
private int mEntryPoint = EntryPoint.UNKNOWN_ENTRY;
/**
@@ -95,14 +100,20 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
boolean mNeedResetSettings;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNeedResetSettings = false;
mResetStateListeners = getResetStateListeners();
if (icicle != null && icicle.getBoolean(NEED_RESET_SETTINGS)) {
mResetStateListeners.forEach(ResetStateListener::resetState);
if (savedInstanceState != null) {
if (savedInstanceState.getBoolean(NEED_RESET_SETTINGS)) {
mResetStateListeners.forEach(ResetStateListener::resetState);
}
if (savedInstanceState.containsKey(LAST_PREVIEW_INDEX)) {
mLastPreviewIndex = savedInstanceState.getInt(LAST_PREVIEW_INDEX);
}
}
}
@@ -139,19 +150,19 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
final FontSizeData fontSizeData = new FontSizeData(context);
final DisplaySizeData displaySizeData = createDisplaySizeData(context);
final TextReadingPreviewController previewController = new TextReadingPreviewController(
context, PREVIEW_KEY, fontSizeData, displaySizeData);
previewController.setEntryPoint(mEntryPoint);
controllers.add(previewController);
mPreviewController = new TextReadingPreviewController(context, PREVIEW_KEY, fontSizeData,
displaySizeData);
mPreviewController.setEntryPoint(mEntryPoint);
controllers.add(mPreviewController);
final PreviewSizeSeekBarController fontSizeController = new PreviewSizeSeekBarController(
context, FONT_SIZE_KEY, fontSizeData);
fontSizeController.setInteractionListener(previewController);
fontSizeController.setInteractionListener(mPreviewController);
controllers.add(fontSizeController);
final PreviewSizeSeekBarController displaySizeController = new PreviewSizeSeekBarController(
context, DISPLAY_SIZE_KEY, displaySizeData);
displaySizeController.setInteractionListener(previewController);
displaySizeController.setInteractionListener(mPreviewController);
controllers.add(displaySizeController);
mFontWeightAdjustmentController =
@@ -206,6 +217,17 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
if (mNeedResetSettings) {
outState.putBoolean(NEED_RESET_SETTINGS, true);
}
outState.putInt(LAST_PREVIEW_INDEX, mPreviewController.getCurrentItem());
}
@Override
public void onStart() {
super.onStart();
if (mLastPreviewIndex != UNKNOWN_INDEX) {
mPreviewController.setCurrentItem(mLastPreviewIndex);
}
}
@VisibleForTesting