2011-07-13 19 views
5

私は2のLinearLayoutを持っているViewFlipperを追加しており、私はアニメーションのXMLをした: left_in.xml:アンドロイド:ViewFlipperアニメーション

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="3000"/> 
</set> 

right_out.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="3000"/> 
</set> 

left_outを.xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="3000"/> 
</set> 

right_in.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="3000"/> 
</set> 

"次へ" ボタン最初のアプリをロードする際に示した1個のLinearLayoutに:

mNext.setOnClickListener(new View.OnClickListener(){ 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mViewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper1); 
       //mViewFlipper.setAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.left_in)); 
       mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.left_in)); 
       mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.right_out)); 
       mViewFlipper.showNext(); 
      } 

     }); 

と "前のページ" ボタン:

mPrev.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      mViewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper1); 
      mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.right_in)); 
      mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.left_out)); 
      mViewFlipper.showPrevious(); 
     }  
    }); 

"次へ" ボタンがうまくいきます、しかし、「Prev」ボタンが変わってしまいます。「prev」をクリックすると、最初に前のビューに変わってアニメーションが開始され、最後に再び前のビューに変わります!どのようにそれを解決するには? ありがとうございます!

答えて

5

setOutAnimation()setInAnimation()を使用します。

+0

しかし、他のボタン(Previousを表示)を押すと、現在のビューが前のビューに変わり、アニメーションが開始されます。どうして? –

+0

ボタンごとに更新されたコードを投稿できますか? –

+0

ええ、上記のコードを更新しました! –

4

これは非常に古い投稿です。まだ修正はここにあります:

viewFlipper.setOutAnimation(null)viewFlipper.setInAnimation(null)に電話してアニメーションをリセットする必要があります。

@Override 
     public void onClick(View v) 
     { 
     if (v.equals(mNext)) 
     { 
      mViewFlipper.setOutAnimation(null); 

      mViewFlipper.setInAnimation(null); 
       mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.left_in)); 

     vf.setOutAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.right_out)); 

      mViewFlipper.showNext(); 

     } 
     else if (v.equals(mPrev)) 
     { 

      mViewFlipper.setOutAnimation(null); 

      mViewFlipper.setInAnimation(null); 

      mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.right_in)); 

     mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.left_out)); 

      mViewFlipper.showPrevious(); 
     } 

     } 
関連する問題