API11 を使用しているため、Animator APIを使用します。すべてのビューには、対応するセッターとゲッターを持つプロパティがあります。ビューを範囲外に左に移動するには、画面の幅を取得してから次のようにします。
View viewToShiftOut = getOutView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
outAnim.setDuration(1000);
outAnim.start();
これにより、ビューとその内容が 1 秒間 (1000 ミリ秒) の間完全に画面の外に移動します。1 つをその場所に移動するには、次のようにします。
View viewToShiftIn = getInView();
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftIn, "x", widthOfScreen, 0);
inAnim.setDuration(1000);
inAnim.start();
すべてのプロパティ、クリック可能な領域などがビューに追従するため、アニメーションが終了したら完了です。次のように一緒にアニメーション化できます。
View viewToShiftOut = getOutView();
View viewToShiftIn = getInView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", widthOfScreen, 0);
outAnim.setDuration(1000);
inAnim.setDuration(1000);
outAnim.start();
inAnim.start();
ブログ投稿
編集: ビューを 1/3 だけシフトしたいことに気付いたので、それぞれをシフトするピクセルの量を得ることができますwidthOfScreen/3
。
編集 2: もう 1 つの利点は、ほとんどの 3.0 以降のタブレットで発生する問題なく、ハードウェア アクセラレーションを使用できることです。