ViewPagerとViewFlipperの基本原理


ViewPager extends ViewGroup
ViewPagerはonMeasure,onLayout,draw(),onDraw(),draw()で主にEdgeEffect(ダンピング効果)を描画し,onDrawで主にmarginDrawableを描画した.VelocityTracker,ScrollerおよびscrollTo()メソッドを使用してスライドとflingを実現
 
ViewFlipper extends ViewAnimator
ViewAnimator extends FrameLayout
ViewFlipperもViewAnimatorもonMeasure,onLayout,onDrawなどの方法を実現していません.AutoStart、flingIntervalプロパティを追加し、addView()メソッドでchildを追加した後、FrameLayoutのレイアウトですべて重ね合わせます.そしてRunnableとstartFling()の方法を実現し、View.startAnimation()はsetInAnimationとsetOutAnimationのアニメーションをそれぞれ2つのchildに適用し、アニメーションが完了すると、他のvisibilityをinvisible、1つのchildをvisibleに設定します.
一方、ViewFlipperは自動ループ再生ロジックのみを実現している.
移動切替であれば、InAnimationのtoXDeltaは0、つまり最終的に元の場所に到達しなければならない.OutAnimationのFromXDeltaは0でなければなりません.つまり、元の場所から離れなければなりません.一般的にanimationは以下のようにします.
InAnimation


    

 
OutAnimation