Android ViewPager切り替えのN種動画

2528 ワード

前編『Android ViewPager使用』に基づいてhttp://gqdy365.iteye.com/blog/2114963
ここでは、ViewPager切り替えの7でよく使われるアニメーションを実現し、まず効果図をアップします.
Android ViewPager切换的N种动画_第1张图片
実装プロセス:
1、ViewPagerにはインタフェースPageTransformerがあり、ViewPagerはページ切り替え時(onPageScrolledメソッド)にPageTransformerを呼び出して、私たちのカスタムの特効を呼び出します.論理関係は図のようです:
Android ViewPager切换的N种动画_第2张图片
2、アニメーションの実現:
Android 3.1から、Viewには次の方法が追加されました.
setsetAlpha:透明度の変化;
setTranslation:位置変化;
setScale:スケール変更;
setRotation:角度変化;
これらの方法の組み合わせを用いて,種々のViewスイッチング特効を実現することができる.
Android 3.1以前のバージョンではこれらの方法は使えませんでしたか?もちろんいいえ、万能github、万能のオープンソースプロジェクトがあります.https://github.com/JakeWharton/NineOldAndroids
彼は3.1以下のバージョンで上記の方法の呼び出しを実現し、オープンソースに敬意を表し、共有に敬意を表します!!!
次に、立方体効果の例を示します.

public class CubeTransformer implements PageTransformer {
	
	/**
	 * position                  。        ,           。            ,    0,
	 *                ,    1。              ,          -0.5,         0.5。          
	 * ,      setAlpha()、setTranslationX()、 setScaleY()          ,           。
	 */
	@Override
	public void transformPage(View view, float position) {
		if (position <= 0) {
			//         View
			
			//       ;
			ViewHelper.setPivotX(view, view.getMeasuredWidth());
			ViewHelper.setPivotY(view, view.getMeasuredHeight() * 0.5f);
			
			//  Y      
			ViewHelper.setRotationY(view, 90f * position);
		} else if (position <= 1) {
			//         View
			ViewHelper.setPivotX(view, 0);
			ViewHelper.setPivotY(view, view.getMeasuredHeight() * 0.5f);
			ViewHelper.setRotationY(view, 90f * position);
		}
	}
}

注釈はもう詳しくなっていますが、どうでしょう.もう特別な説明はいらないでしょう.
他の効果は似ています!
3、使用方法:
たった一言:

vPage.setPageTransformer(true, new CubeTransformer());

Demo添付ファイルを参照!