Change Preview Pager and Pager Indicator order for

RTL environment
Bug: 28025982

Change-Id: Ia80220f9e4c4a22a10e7cd857dc4e3573ee7b51d
This commit is contained in:
Noah Wang
2016-04-09 20:53:14 -07:00
parent bd666a17a2
commit 37c95e41e0
2 changed files with 18 additions and 9 deletions

View File

@@ -45,19 +45,23 @@ public class PreviewPagerAdapter extends PagerAdapter {
/** Interpolator to use when cross-fading between previews. */ /** Interpolator to use when cross-fading between previews. */
private static final Interpolator FADE_OUT_INTERPOLATOR = new AccelerateInterpolator(); private static final Interpolator FADE_OUT_INTERPOLATOR = new AccelerateInterpolator();
private final FrameLayout[] mPreviewFrames; private FrameLayout[] mPreviewFrames;
private boolean mIsLayoutRtl;
private Runnable mAnimationEndAction; private Runnable mAnimationEndAction;
private int mAnimationCounter; private int mAnimationCounter;
public PreviewPagerAdapter(Context context, int[] previewSampleResIds, public PreviewPagerAdapter(Context context, boolean isLayoutRtl,
Configuration[] configurations) { int[] previewSampleResIds, Configuration[] configurations) {
mIsLayoutRtl = isLayoutRtl;
mPreviewFrames = new FrameLayout[previewSampleResIds.length]; mPreviewFrames = new FrameLayout[previewSampleResIds.length];
for (int i = 0; i < previewSampleResIds.length; ++i) { for (int i = 0; i < previewSampleResIds.length; ++i) {
mPreviewFrames[i] = new FrameLayout(context); int p = mIsLayoutRtl ? previewSampleResIds.length - 1 - i : i;
mPreviewFrames[i].setLayoutParams(new LinearLayout.LayoutParams( mPreviewFrames[p] = new FrameLayout(context);
mPreviewFrames[p].setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT)); LinearLayout.LayoutParams.MATCH_PARENT));
@@ -69,10 +73,10 @@ public class PreviewPagerAdapter extends PagerAdapter {
final LayoutInflater configInflater = LayoutInflater.from(configContext); final LayoutInflater configInflater = LayoutInflater.from(configContext);
final View sampleView = configInflater.inflate(previewSampleResIds[i], final View sampleView = configInflater.inflate(previewSampleResIds[i],
mPreviewFrames[i], false); mPreviewFrames[p], false);
sampleView.setAlpha(0); sampleView.setAlpha(0);
sampleView.setVisibility(View.INVISIBLE); sampleView.setVisibility(View.INVISIBLE);
mPreviewFrames[i].addView(sampleView); mPreviewFrames[p].addView(sampleView);
} }
} }
} }

View File

@@ -21,6 +21,7 @@ import android.content.res.Configuration;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@@ -29,9 +30,11 @@ import android.view.accessibility.AccessibilityEvent;
import android.widget.SeekBar; import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.widget.DotsPageIndicator; import com.android.settings.widget.DotsPageIndicator;
import com.android.settings.widget.LabeledSeekBar; import com.android.settings.widget.LabeledSeekBar;
import java.util.Locale;
/** /**
* Preference fragment shows a preview and a seek bar to adjust a specific settings. * Preference fragment shows a preview and a seek bar to adjust a specific settings.
@@ -146,6 +149,7 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
final Context context = getPrefContext(); final Context context = getPrefContext();
final Configuration origConfig = context.getResources().getConfiguration(); final Configuration origConfig = context.getResources().getConfiguration();
final boolean isLayoutRtl = origConfig.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
Configuration[] configurations = new Configuration[mEntries.length]; Configuration[] configurations = new Configuration[mEntries.length];
for (int i = 0; i < mEntries.length; ++i) { for (int i = 0; i < mEntries.length; ++i) {
configurations[i] = createConfig(origConfig, i); configurations[i] = createConfig(origConfig, i);
@@ -153,9 +157,10 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
mPreviewPager = (ViewPager) content.findViewById(R.id.preview_pager); mPreviewPager = (ViewPager) content.findViewById(R.id.preview_pager);
if (mPreviewPager != null) { if (mPreviewPager != null) {
mPreviewPagerAdapter = new PreviewPagerAdapter(context, mPreviewSampleResIds, mPreviewPagerAdapter = new PreviewPagerAdapter(context, isLayoutRtl,
configurations); mPreviewSampleResIds, configurations);
mPreviewPager.setAdapter(mPreviewPagerAdapter); mPreviewPager.setAdapter(mPreviewPagerAdapter);
mPreviewPager.setCurrentItem(isLayoutRtl ? mPreviewSampleResIds.length - 1 : 0);
mPreviewPager.addOnPageChangeListener(mPreviewPageChangeListener); mPreviewPager.addOnPageChangeListener(mPreviewPageChangeListener);
mPageIndicator = (DotsPageIndicator) content.findViewById(R.id.page_indicator); mPageIndicator = (DotsPageIndicator) content.findViewById(R.id.page_indicator);