2011-07-13 62 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> 

在一個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」時,它首先變成前一個視圖,然後開始動畫,最後再次變成Previous視圖!如何解決它? 在此先感謝!

回答

5
+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(); 
     } 

     }