2016-05-31 2 views
-1

내가 누군가에 해당하는 C# 코드가 무엇인지 저를 보여줄 수, 자 마린에 새로운 오전 나는 클래스에 리스너를 설정하고 Animator.IAnimatorListener을 구현하는 방법을 알고 있지만 내가 알고 싶은자 마린 C# 수신기

mLoginFormView.Animate().SetDuration(200).Alpha(
       show ? 0 : 1).setListener(new AnimatorListenerAdapter() { 
    @Override 
    public void onAnimationEnd(Animator animation) { 
     mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); 
    } 
}); 

다음 그것이 익명의 클래스를 사용하여 할 수 있다면?

+0

"위와 같이하십시오"라고 말하면 익명의 클래스 사용을 언급합니까? 그렇다면 실제로는 아닙니다. C#은 익명 형식의 인터페이스 구현을 지원하지 않습니다. 그러나 Xamarin의 대부분의 바인딩은 Android 리스너를 C# 이벤트로 노출하여 필요가 없도록합니다. 예를 들어 Android의 버튼에는'setOnClickListener' 대신 사용할 수있는'Clicked' 이벤트가 있습니다. – dylansturg

+0

예, 익명의 클래스는 유감스럽게 생각합니다. 이 예제에서는 동일한 클래스에 두 개의 별도 애니메이션 리스너가 필요하지만 OnAnimationEnd가 호출 될 때 두 애니메이션을 구별하는 방법을 잘 모르겠습니다. – Carl

+0

Java 코드는 리스너를 사용하지만 Xamarin은이를 .NET 이벤트 핸들러 (델리게이트)를 사용하여 구독해야하는 네이티브 C# 이벤트로 변환합니다. –

답변

0

위의 코드와 거의 동일하게 작동합니다.

mLoginFormView.Animate() 
    .SetDuration(200) 
    .Alpha(show ? 0 : 1) 
    .SetListener(this); 

귀하의 활동/단편에 Android.Animation.Animator.IAnimatorListener을 구현하십시오.

public class MainActivity : Activity, Android.Animation.Animator.IAnimatorListener 
{ 
    //other interface implemented methods... 
    public void OnAnimationEnd(Android.Animation.Animator animation) 
    { 
     //do your stuff here 
    } 
} 

또는,이 인터페이스를 구현하는 클래스를 사용할 수 있지만 현재의 활동/조각을 사용하는 아주 정상입니다.

+0

나는 위에서 언급 한 것처럼이 방법을 이해한다. 내 문제는 동일한 클래스에서 두 개의 애니메이션 리스너를 사용하고 클래스 수준의 OnAnimationEnd에서 두 가지를 식별 할 수있는 방법이 없다는 것이다. – Carl

+0

그럼 두 개의 다른 클래스를 사용한다. 인터페이스 –