0
さらに、transformPageメソッドが受信ビューと送信ビューの両方で同時に呼び出されるのですか?送信ビューを左側に、右側から受信ビューをアニメーションにするにはどうしたらいいですか?ViewPager.PageTransformer.transformPageメソッドでページのスライドが完了したことをどのように検出しますか?
さらに、transformPageメソッドが受信ビューと送信ビューの両方で同時に呼び出されるのですか?送信ビューを左側に、右側から受信ビューをアニメーションにするにはどうしたらいいですか?ViewPager.PageTransformer.transformPageメソッドでページのスライドが完了したことをどのように検出しますか?
はい、transformPageメソッドは両方のビューで同時に呼び出されます。 transformPageメソッドの最初のパラメータで現在のビューインスタンスを取得します。
public void transformPage(View view, float position) {...}
第2パラメータはビューの位置です。ドキュメントで説明されているように
ページャの位置は現在のフロントとセンター *ページャの位置です。 0は正面と中央です。 1は1つ完全です *右のページ位置、-1は左の1ページ位置です。単純FadInとFadOut変換は、次のコード
public class MyFadePageTransformer implements ViewPager.PageTransformer { public void transformPage(View view, float position) { //You can set Tag to view object and getTag to know current view //Log.d("Page Transform", "page " + view.getTag().toString()); if (position < -1 || position > 1) { view.setAlpha(0); } else if (position <= 0 || position <= 1) { // Calculate alpha. Position is decimal in [-1,0] or [0,1] float alpha = (position <= 0) ? position + 1 : 1 - position; view.setAlpha(alpha); } else if (position == 0) { view.setAlpha(1); } } }
で適用することができる
そしてViewPager
にPageTransformerを追加mViewPager.setPageTransformer(false, new MyFadePageTransformer());