ViewPager.Transformer を ViewPager に適用する方法については、このチュートリアルに従っています。Chris Basha がビューページャーで 2 つのフラグメントのチュートリアルしか書いていないことに気付くでしょう。ビューページャーで 3 つのフラグメントを使用したいのです。
ビューページャー内のフラグメントの右側から2つのtextViewを左側に移動したいだけです。ビューページャーには 3 つのフラグメントがあります。
これが私のコードです:
private class TranslationPageTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <=1) { // [-1,1]
hello.setTranslationX((float) (-(1-position) * 1.5 * pageWidth));
howareyou.setTranslationX((float) (-(1-position) * 0.5 * pageWidth));
}
else {
view.setAlpha(1);
}
}
}
ビューページャーのページ 1 ビューは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity$PlaceholderFragment">
<TextView style="?android:textAppearanceMedium"
android:padding="16dp"
android:lineSpacingMultiplier="1.2"
android:layout_gravity="right"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hello"
/>
<TextView style="?android:textAppearanceMedium"
android:padding="16dp"
android:lineSpacingMultiplier="1.2"
android:layout_gravity="right"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/howareyou"
/>
</LinearLayout>
ページ 1 からページ 2 に移動して再びページに戻ると、上記のコードは魅力的に機能します。テキストは右から左に移動してから再び元に戻り、ビューページャーの動きとは異なる速度で加速します。
ページ 1 - ページ 2 - ページ 3 から移動してから、ページ 3 - ページ 2 - ページ 1 に移動すると、2 つのテキストビューが元の位置に戻らないようです。実際、「こんにちは」という単語を含むテキストビューは表示されず、「お元気ですか?」はもはや右揃えではありません:
page1-2-3 から page3-2-1 に移動するときに、両方の textView を元の位置に戻すにはどうすればよいですか?