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();
Blog post
EDITを:私はあなただけの1 /第3回でビューをシフトしたかった気づいた、あなたはwidthOfScreen/3
によってそれぞれシフトするピクセルの量を得ることができるので、 。
EDIT 2:もう1つの利点は、ハードウェアアクセラレーションで、ほとんどの3.0+タブレットに問題なく使用できます。
これは私がやっていたことです。 view.layout(新しい座標)を呼び出した後、ビューが正しい場所に移動しますが(xに負のマージンも必要です)、しばらくしてからレイアウトが再度呼び出され、ビューが元の位置にスナップします。私は、レイアウトを拡張し、正しい位置を反映するためにレイアウト(r、t、l、b)の値を変更したことを確認する様々な方法を試しました。 – totem
コードを投稿できますか?私はあなたが何を正確に言及しているのかはっきりしていません。 –