2013-01-04 18 views
20

このコードを使用して、私はフェードインしているだけで、フェードアウトも追加したいと考えています。私は "fadeout"と呼ばれる別のXMLを追加しますが、私は自分のコードにそれを統合することはできません。アニメーションのフェードインとアウト

ImageView imageView= (ImageView)findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein); 
imageView.startAnimation(fadeInAnimation); 

button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
imageView.startAnimation(fadeInAnimation); 

XML

<?xml version="1.0" encoding="UTF-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="Your Duration(in milisecond)" 
    android:repeatCount="infinite"/> 
</set> 

答えて

19

これは良い例ですFade In and Fade Out Animation with Alpha Effect

Animate Fade In Fade Out

更新のために:

これをチェックしてくださいanswerこれはあなたに役立つかもしれません

+0

それは正確ではありません。:フェードアウトなしで画像をフェードインした後、フェードインでも同じです。 –

31

私の解決策はここにあります。 AnimatorSetを使用します。 AnimationSetライブラリが動作しすぎていた。フェードインとフェードアウトの間のシームレスで無限のトランジションを提供します。

public static void setAlphaAnimation(View v) { 
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v, "alpha", 1f, .3f); 
    fadeOut.setDuration(2000); 
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v, "alpha", .3f, 1f); 
    fadeIn.setDuration(2000); 

    final AnimatorSet mAnimationSet = new AnimatorSet(); 

    mAnimationSet.play(fadeIn).after(fadeOut); 

    mAnimationSet.addListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      super.onAnimationEnd(animation); 
      mAnimationSet.start(); 
     } 
    }); 
    mAnimationSet.start(); 
} 
2

ドキュメントAnimationSet

によると、一緒に再生されなければならないアニメーションのグループを表します。個々のアニメーションの 変換は、一緒に1つの変換 に構成されます。 AnimationSetはその 子どもたちはまた、設定されたすべてのプロパティ(例えば、期間またはfillBefore)を設定した場合は、 AnimationSetの値は、アニメーションのすべてのこのセットの場合は、子が真

AnimationSet mAnimationSet = new AnimationSet(false); //false means don't share interpolators 

パス値より優先しますこのAnimationSetに関連付けられた補間子 を使用する必要があります。各 アニメーションが独自の補間を使用する必要がある場合はfalseを渡します。

ImageView imageView= (ImageView)findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); 
Animation fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); 
mAnimationSet.addAnimation(fadeInAnimation); 
mAnimationSet.addAnimation(fadeOutAnimation); 
imageView.startAnimation(mAnimationSet); 

私は、これはあなたを助けることを願っています。

0

私はKotlinで働いています(皆にお勧めします)。そのため、構文が少しずれている可能性があります。私は何 は、単に呼び出すことです:。

  • v.animate()アルファ(0F).duration = 200

私はJavaで、それは次のようになる、ということだと思います: 。

  • v.animate()アルファ(0F).setDuration(200)

試行:

  • private void hide(ビューv、int duration){ v.animate()。アルファ(0f)。setDuration(期間) }

  • ます。private voidショー(ビューV、int型の期間){ v.animate()アルファ(1F).setDuration(デュレーション) }

関連する問題