2013-10-15 66 views
0

我正在利用這個項目(https://code.google.com/p/android-3d-flip-view-transition/)在我的Android應用程序中進行卡片翻轉。AnimationFactory FlipTransition - 動畫監聽器?

下面是我用翻轉卡代碼,

AnimationFactory.flipTransition((ViewAnimator) v,FlipDirection.LEFT_RIGHT); 

我怎麼知道如果動畫是否已完成?我嘗試了下面的代碼來爲動畫添加一個偵聽器complete,但是它會拋出一個NullPointerException異常。

((ViewAnimator) v).getAnimation().setAnimationListener(new AnimationListener() { 

@Override 
public void onAnimationStart(Animation animation) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onAnimationRepeat(Animation animation) {} 

@Override 
public void onAnimationEnd(Animation animation) {//do something} 

}); 

任何指針?

回答

2

你需要創建界面,並重寫方法:

public static Animation[] flipAnimation 

,並設置監聽器inFlipoutFlip - 那麼它會工作。

或者,您可以在翻轉視圖時定義可運行,postDelayed - 500毫秒(此時設置在此項目上,動畫時間)。 - 這個選項是不是很不錯,不推薦。

編輯:

接口:

public interface FlipCompleteListener { 

    public void flipOutComplete(); 

    public void flipInComplete(); 

} 

在類AnimationFactory:

private static FlipCompleteListener flipCompleteListener; 

    public static void setFlipCompleteListener(FlipCompleteListener flipCompleteListener) { 
     AnimationFactory.flipCompleteListener = flipCompleteListener; 
    } 

在方法flipAnimation:

outFlip.setAnimationListener(new AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      if(flipCompleteListener != null) { 

      flipCompleteListener.flipOutComplete(); 

      } 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
     } 
    }); 

在您的課,喜歡上創建:

... extends Activity implements FlipCompleteListener 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     AnimationFactory.setFlipCompleteListener(this); 
    ... 

而且最後你有需要的方法:

@Override 
    public void flipOutComplete() { 
    } 

    @Override 
    public void flipInComplete() { 
    } 

這應該工作,但是使用靜態的聽衆 - 壞了,需要重構靜態方法對象的方法。在MIT許可證下的項目,允許你這樣做。

+0

正如你所提到的,我創建了一個接口並覆蓋了flipAnimation方法,但是這並沒有被調用..你可以發佈你正在使用的代碼嗎? – Naveen

+1

我編輯信息。 – artemiygrn

+0

謝謝你一羣夥計..它的工作..你搖滾:) – Naveen