2016-05-31 81 views
-1

我是新来Xamarin,可有人告诉我等价的C#代码是什么以下Xamarin 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); 
    } 
}); 

我知道如何监听器设置为类并实现Animator.IAnimatorListener,但我想知道如果有可能使用匿名类来做到这一点?

+0

当你说“像上面这样做”时,你指的是使用匿名类吗?如果是这样,那么不是真的。 C#不支持以匿名类型实现接口。但是Xamarin的大多数绑定都将Android监听器暴露为C#事件以避免这种需求。例如,Android的按钮有一个'Clicked'事件可以用来代替'setOnClickListener'。 – dylansturg

+0

是的,对不起,匿名课程。在这个例子中,我想在同一个类中有两个独立的动画侦听器,但我不确定在OnAnimationEnd被调用时如何区分这两个动画。 – Carl

+0

Java代码使用侦听器,而Xamarin将它们转换为本机C#事件,您应该使用.NET事件处理程序(代理)来订阅它们。 –

回答

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 
    } 
} 

或者,您可以使用另一个实现接口的类,但使用当前的Activity/Fragment是非常正常的。

+0

我的理解是这样的,我的问题是,我想在同一个类中使用两个动画侦听器,并且在类级别的OnAnimationEnd中,我无法识别两个 – Carl

+0

然后我会使用两个不同的类来实现界面。 –