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