我正在使用Sam在24小时内自学Android应用程序开发学习Android Dev,我在下面看到了一个代码。我也是相对较新的Java,但我非常了解基础知识,但我不明白onAnimationEnd()如何作为参数在里面实现???有人可以解释发生了什么,这对于setAnimationListener方法来说这是一个有效的参数(语法)?
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 :(得分:2)
这称为anonymous inner class,是Java最有用的功能之一,尤其适用于听众。 (链接的文章有更多的代码示例。)
基本上,它是用于创建实现AnimationListener
接口的新类的简写语法。该类没有名称,这就是为什么它被称为“匿名”类。您可以在方法调用中定义内联接口的所有三种方法。在匿名内部类中,您可以从包含的类和方法访问字段,方法和局部变量。
您可能还想阅读有关Android and Java - use of Runnable的讨论。
答案 1 :(得分:0)
这不是参数。它看起来像是来自新手的角度,但它是一个界面,必须实现的方法是onAnimationEnd
。如果你看onClickListener
,原则是一样的。您需要立即实施onClick
方法。被调用的方法也称为匿名方法。这是一种没有名字的方法。您也将在Java的许多地方看到这些方法。