1

我在 24 小时内使用 Sam 的自学 Android 应用程序开发来学习 Android 开发,我遇到了下面的代码。我对 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) {
       }
});
4

2 回答 2

2

这称为匿名内部类,是 Java 最有用的特性之一,尤其是对于侦听器而言。(链接的文章有更多的代码示例。)

基本上,它是创建实现AnimationListener接口的新类的简写语法。该类没有名称,这就是它被称为“匿名”类的原因。您可以在方法调用中定义内联接口的所有三个方法。在匿名内部类中,您可以从包含的类和方法中访问字段、方法和局部变量。

您可能还想通读关于Android 和 Java 的讨论 - Runnable 的使用

于 2013-10-29T02:07:35.243 回答
0

它不是一个参数。它看起来像是从新手的角度来看的,但它是一个接口,必须实现的方法是onAnimationEnd. 如果你看onClickListener它是相同的原理。您需要onClick立即实施该方法。被调用的方法也称为匿名方法。这是一种没有名字的方法。您还将在 Java 的很多地方看到这些方法。

于 2013-10-29T01:43:21.257 回答