From 6a847bba04e417b41645f2d85c0fd13fdae9bbde Mon Sep 17 00:00:00 2001 From: Peter Liang Date: Wed, 21 Sep 2022 20:45:19 +0800 Subject: [PATCH] Fix that display size and text preview is going blank while scrolling the page in landscape view. Problem: It seems that the inconsistent index would cause the view stub couldn't be inflated successfully. Solution: Adjust it to the same index. Fix: 244336110 Test: manual test Change-Id: I2688e6feb61ac64f989e5f8e4910e6eeca3a97bf --- .../TextReadingPreviewController.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/com/android/settings/accessibility/TextReadingPreviewController.java b/src/com/android/settings/accessibility/TextReadingPreviewController.java index 98767d9d0ca..dab57babaed 100644 --- a/src/com/android/settings/accessibility/TextReadingPreviewController.java +++ b/src/com/android/settings/accessibility/TextReadingPreviewController.java @@ -42,6 +42,8 @@ import java.util.Objects; class TextReadingPreviewController extends BasePreferenceController implements PreviewSizeSeekBarController.ProgressInteractionListener { private static final String TAG = "TextReadingPreviewCtrl"; + private static final int LAYER_INITIAL_INDEX = 0; + private static final int FRAME_INITIAL_INDEX = 0; static final int[] PREVIEW_SAMPLE_RES_IDS = new int[]{ R.layout.accessibility_text_reading_preview_app_grid, R.layout.screen_zoom_preview_1, @@ -108,25 +110,15 @@ class TextReadingPreviewController extends BasePreferenceController implements final PreviewPagerAdapter pagerAdapter = new PreviewPagerAdapter(mContext, isLayoutRtl, PREVIEW_SAMPLE_RES_IDS, createConfig(origConfig)); mPreviewPreference.setPreviewAdapter(pagerAdapter); - mPreviewPreference.setCurrentItem(isLayoutRtl ? PREVIEW_SAMPLE_RES_IDS.length - 1 : 0); - pagerAdapter.setPreviewLayer(/* newLayerIndex= */ 0, - /* currentLayerIndex= */ 0, - /* currentFrameIndex= */ 0, /* animate= */ false); + mPreviewPreference.setCurrentItem( + isLayoutRtl ? PREVIEW_SAMPLE_RES_IDS.length - 1 : FRAME_INITIAL_INDEX); + pagerAdapter.setPreviewLayer(getPagerIndex(), LAYER_INITIAL_INDEX, + FRAME_INITIAL_INDEX, /* animate= */ false); } @Override public void notifyPreferenceChanged() { - final int displayDataSize = mDisplaySizeData.getValues().size(); - final int fontSizeProgress = mFontSizePreference.getProgress(); - final int displaySizeProgress = mDisplaySizePreference.getProgress(); - - // To be consistent with the - // {@link PreviewPagerAdapter#setPreviewLayer(int, int, int, boolean)} behavior, - // here also needs the same design. In addition, please also refer to - // the {@link #createConfig(Configuration)}. - final int pagerIndex = fontSizeProgress * displayDataSize + displaySizeProgress; - - mPreviewPreference.notifyPreviewPagerChanged(pagerIndex); + mPreviewPreference.notifyPreviewPagerChanged(getPagerIndex()); } @Override @@ -174,6 +166,15 @@ class TextReadingPreviewController extends BasePreferenceController implements choreographer.postFrameCallbackDelayed(mCommit, commitDelayMs); } + private int getPagerIndex() { + final int displayDataSize = mDisplaySizeData.getValues().size(); + + // To be consistent with the {@link PreviewPagerAdapter#setPreviewLayer(int, int, int, + // boolean)} behavior, here also needs the same design. In addition, please also refer to + // the {@link #createConfig(Configuration)}. + return mLastFontProgress * displayDataSize + mLastDisplayProgress; + } + private void tryCommitFontSizeConfig() { final int fontProgress = mFontSizePreference.getProgress(); if (fontProgress != mLastFontProgress) {