簡體   English   中英

如何在MonoDroid中制作動畫監聽器?

[英]How to make an animation listener in MonoDroid?

我想把這個Android代碼轉換為monoDroid

Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
fade2.setAnimationListener(new AnimationListener() {
    public void onAnimationEnd(Animation animation) {
        startActivity(new Intent(QuizSplashActivity.this,
            QuizMenuActivity.class));
        QuizSplashActivity.this.finish();
    }
});

到目前為止我有這個

Animation fade2 = AnimationUtils.LoadAnimation(this, Resource.Animation.Fade_in2);
 fade2.SetAnimationListener(????);

我沒有看到新的AnimationListener()。 它似乎不需要一些界面或東西。

您的源代碼Java代碼正在使用匿名內部類:

fade2.setAnimationListener(new AnimationListener() {...});

C#不支持這些(C#3匿名類型與Java匿名內部類沒有任何關系),因此您需要提供一個顯式類型並使用它:

class MyAnimationListener : Java.Lang.Object,
        Android.Views.Animations.Animation.IAnimationListener
{
    Activity self;

    public MyAnimation (Activity self)
    {
        this.self = self;
    }

    public void OnAnimationEnd (Animation animation)
    {
        self.StartActivity (new Intent (self, typeof (QuizMenuActivity)));
        self.Finish ();
    }

    public void OnAnimationRepeat (Animation animation)
    {
    }

    public void OnAnimationStart (Animation animation)
    {
    }
}

// ...
fade2.SetAnimationListener (new MyAnimationListener (this));

如上所示,為了實現接口,我們還繼承了Java.Lang.Object (這為我們實現了Android.Runtime.IJavaObject ),而不是像在Java中那樣隱式引用QuizSplashActivity.this ,而是需要顯式捕獲它作為一個self領域。

這可以通過提供一個幫助程序基類型來簡化(我想在Java代碼中, AnimationListener是一個幫助程序類型,因為並非所有的Animation.AnimationListener方法都提供了,所以在C#中執行相同的操作也會有效) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM