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
This commit is contained in:
Peter Liang
2022-09-21 20:45:19 +08:00
committed by PETER LIANG
parent 581fd171b5
commit 6a847bba04

View File

@@ -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) {