[英]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.