2013-10-29 110 views
1

我在24小時內使用Sam的自學Android應用程序開發學習Android開發,並且我遇到下面的代碼。我對Java也比較陌生,但我很瞭解基礎知識,但我不明白onAnimationEnd()如何作爲參數在內部實現?有人可以解釋發生了什麼事嗎?這是一個setAnimationListener方法的有效參數(語法)嗎?實現AnimationListener抽象方法

fade2.setAnimationListener(new AnimationListener() { 
    public void onAnimationEnd(Animation animation) { 
    // The animation has ended, transition to the Main Menu screen 
     startActivity(new Intent(QuizSplashActivity.this, QuizMenuActivity.class)); 
     QuizSplashActivity.this.finish(); 
    } 

    public void onAnimationRepeat(Animation animation) { 
    } 

    public void onAnimationStart(Animation animation) { 
     } 
}); 

回答

0

它不是參數。它看起來像來自新手的角度,但它是一個界面,必須實施的方法是onAnimationEnd。如果你看一下onClickListener這是同樣的原則。您需要立即實施onClick方法。被調用的方法也稱爲匿名方法。這是一個沒有名字的方法。你也會在Java的很多地方看到這些方法。

+0

我還沒有遇到'onClickeListener'。但是當我做我會知道! – tochtlix86

2

這就是所謂的anonymous inner class和Java的最有用的功能之一,特別是對聽衆。 (鏈接的文章有更多的代碼示例。)

基本上,它是創建實現AnimationListener接口的新類的簡寫語法。該類沒有名字,這就是爲什麼它被稱爲「匿名」類。您可以在方法調用中定義內聯的所有三種方法。在匿名內部類中,您可以從包含的類和方法中訪問字段,方法和局部變量。

您可能還想閱讀關於Android and Java - use of Runnable的討論。

+0

謝謝@cogentapps。這個概念聽起來與Python中的lambda函數類似。所以它很有意義。 – tochtlix86