2016-05-31 10 views
-1

私が誰かが同等のC#のコードが何のためにあるのか私を示すことができ、Xamarinに新しいです、私はクラスにリスナーを設定し、Animator.IAnimatorListenerを実装する方法を知っているが、私は知りたい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); 
    } 
}); 

次匿名クラスを使用してそれを行うことが可能ならば?

+0

"あなたは上記のように"と言うとき、あなたは匿名のクラスの使用を指していますか?もしそうなら、そうではありません。 C#は匿名型のインターフェイスの実装をサポートしていません。しかし、Xamarinからのほとんどのバインディングは、AndroidリスナーをC#イベントとして公開し、その必要性を回避します。たとえば、Androidのボタンには、 'setOnClickListener'の代わりに使用できる' Clicked'イベントがあります。 – dylansturg

+0

はい、申し訳ありません匿名のクラス。この例では、同じクラスに2つの別々のアニメーションリスナーが必要ですが、OnAnimationEndが呼び出されたときに2つのアニメーションを区別する方法がわかりません。 – 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 
    } 
} 

また、インターフェイスを実装する別のクラスを使用することもできますが、現在のアクティビティ/フラグメントを使用するのはかなり普通です。

+0

私は前述のようにこの方法を理解しています。私の問題は、同じクラスで2つのアニメーションリスナーを使用しようとしていて、OnAnimationEndクラスレベルで、私はその2つの間を識別する方法がありません – Carl

+0

次に、インタフェース。 –