Ваш исходный код 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
для нас) и вместо неявной ссылки на QuizSplashActivity.this
, как это делается в Java, вместо этого нам нужно явно захватить его как поле self
.
Это можно упростить, предоставив вспомогательный базовый тип (я полагаю, что в коде Java AnimationListener
является вспомогательным типом, так как были предоставлены не все методы Animation.AnimationListener, что делает то же самое в C # будет работать так же).