2013-10-29 2 views
1

나는 Sam의 Teach Yourself Android Application Development를 사용하여 Android Dev를 배우고 있으며, 24 시간 안에 아래 코드가 나타납니다. 나 또한 상대적으로 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이며 자바의 가장 유용한 기능 중 하나입니다. 특히 청취자에게 유용합니다. 연결된 기사에는 더 많은 코드 예제가 있습니다.

기본적으로 AnimationListener 인터페이스를 구현하는 새 클래스를 만들기위한 약식 구문입니다. 클래스에는 이름이 없으므로 "익명"클래스라고합니다. 메소드 호출 내에서 인터페이스의 세 가지 메소드를 모두 인라인으로 정의 할 수 있습니다. 그리고 익명의 내부 클래스 안에서, 당신은 포함하는 클래스와 메소드로부터 필드, 메소드, 로컬 변수에 접근 할 수 있습니다.

Android and Java - use of Runnable에 대한 토론을 읽어 볼 수도 있습니다.

+0

감사합니다. @cogentapps. 이 개념은 파이썬의 람다 함수와 비슷하다. 그래서 많은 의미가 있습니다. – tochtlix86