Merge "Fix screen freeze when changing display size in Multi-Window mode"

This commit is contained in:
Treehugger Robot
2017-12-12 23:59:23 +00:00
committed by Gerrit Code Review

View File

@@ -58,6 +58,7 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
private DotsPageIndicator mPageIndicator; private DotsPageIndicator mPageIndicator;
private TextView mLabel; private TextView mLabel;
private LabeledSeekBar mSeekBar;
private View mLarger; private View mLarger;
private View mSmaller; private View mSmaller;
@@ -110,19 +111,17 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
// seek bar. // seek bar.
final int max = Math.max(1, mEntries.length - 1); final int max = Math.max(1, mEntries.length - 1);
final LabeledSeekBar seekBar = (LabeledSeekBar) content.findViewById(R.id.seek_bar); mSeekBar = (LabeledSeekBar) content.findViewById(R.id.seek_bar);
seekBar.setLabels(mEntries); mSeekBar.setLabels(mEntries);
seekBar.setMax(max); mSeekBar.setMax(max);
seekBar.setProgress(mInitialIndex);
seekBar.setOnSeekBarChangeListener(new onPreviewSeekBarChangeListener());
mSmaller = content.findViewById(R.id.smaller); mSmaller = content.findViewById(R.id.smaller);
mSmaller.setOnClickListener(new OnClickListener() { mSmaller.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
final int progress = seekBar.getProgress(); final int progress = mSeekBar.getProgress();
if (progress > 0) { if (progress > 0) {
seekBar.setProgress(progress - 1, true); mSeekBar.setProgress(progress - 1, true);
} }
} }
}); });
@@ -131,9 +130,9 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
mLarger.setOnClickListener(new OnClickListener() { mLarger.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
final int progress = seekBar.getProgress(); final int progress = mSeekBar.getProgress();
if (progress < seekBar.getMax()) { if (progress < mSeekBar.getMax()) {
seekBar.setProgress(progress + 1, true); mSeekBar.setProgress(progress + 1, true);
} }
} }
}); });
@@ -141,7 +140,7 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
if (mEntries.length == 1) { if (mEntries.length == 1) {
// The larger and smaller buttons will be disabled when we call // The larger and smaller buttons will be disabled when we call
// setPreviewLayer() later in this method. // setPreviewLayer() later in this method.
seekBar.setEnabled(false); mSeekBar.setEnabled(false);
} }
final Context context = getContext(); final Context context = getContext();
@@ -172,6 +171,21 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
return root; return root;
} }
@Override
public void onStart() {
super.onStart();
// Set SeekBar listener here to avoid onProgressChanged() is called
// during onRestoreInstanceState().
mSeekBar.setProgress(mCurrentIndex);
mSeekBar.setOnSeekBarChangeListener(new onPreviewSeekBarChangeListener());
}
@Override
public void onStop() {
super.onStop();
mSeekBar.setOnSeekBarChangeListener(null);
}
/** /**
* Creates new configuration based on the current position of the SeekBar. * Creates new configuration based on the current position of the SeekBar.
*/ */