2016-05-31 82 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

然後我會使用兩個不同的類來實現界面。 –