2013-03-21 9 views
18

私はすでに働いている2つのアニメーションを持っています。 私は同じ時間に私の電車+トゥイーンを消したいです。 これらの行のうちの1つを実行すると動作します。 しかし、私は両方を実行しようとすると、1つだけ動作します.. 私は実際には解決策を見つけることができません。1画像ビューの複数のアニメーション

お手伝いできますか?私は両方のアニメーションを実行するmytrainたい

final ImageView mytrain = (ImageView) findViewById(R.id.train); 
    final Animation traintween = AnimationUtils.loadAnimation(this,R.anim.treinanimation); 
    final Animation trainfade = AnimationUtils.loadAnimation(this,R.anim.trainfade); 


    mytrain.startAnimation(trainfade); 
mytrain.startAnimation(trainntween); 

..

は助けてくれてありがとう!

答えて

55

AnimationSetクラスを使用します。ここ

AnimationSet s = new AnimationSet(false);//false means don't share interpolators 
s.addAnimation(traintween); 
s.addAnimation(trainfad); 
mytrain.startAnimation(s); 
+0

ありがとうございました! – RobinHo

+0

ようこそ。 :) –

+0

'AnimationSet'に' addAnimation() 'メソッドがありません –

3

AnimationSetを使用する必要があります(docsを参照)。再生するアニメーションごとにaddAnimation()に電話するだけです。

+1

addAnimation(trainfade); addAnimation(traintween); public void addAnimation(アニメーションa){ mytrain.startanimation(a); } これはそうですか? – RobinHo

0

は、単一のXMLファイル内のすべてのアニメーションの例です...

をこれがお手伝いしますが、最初にあなたがAnimationSet

のドキュメントをお読みください
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

<scale android:fromXScale="1.0" android:toXScale="3.0" 
    android:fromYScale="1.0" android:toYScale="3.0" android:pivotX="50%" 
    android:pivotY="50%" android:duration="5000" /> 
<set> 
    <alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromAlpha="0.2" android:toAlpha="1.0"  android:duration="3000" /> 
    <rotate android:fromDegrees="0" android:toDegrees="-360" 
     android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" 
     android:startOffset="700" android:duration="4000" /> 
<!--  <translate android:fromXDelta="0%" android:toXDelta="0%" --> 
<!--   android:fromYDelta="0%" android:toYDelta="100%"  android:duration="3000" --> 
</set> 

</set> 
0

あなたはImageSwitcherを使用することもできますが、これはあなたのケースではAnimationSetより優れていると思います。

3

はアンドロイドのAnimatorSetクラスを使用してプログラム的に行うことができます。

final AnimatorSet mAnimatorSet = new AnimatorSet(); 
    mAnimatorSet.playTogether(
       ObjectAnimator.ofFloat(img_view,"scaleX",1,0.9f,0.9f,1.1f,1.1f,1), 
       ObjectAnimator.ofFloat(img_view,"scaleY",1,0.9f,0.9f,1.1f,1.1f,1), 
       ObjectAnimator.ofFloat(img_view,"rotation",0 ,-3 , -3, 3, -3, 3, -3,3,-3,3,-3,0) 
     ); 

//define any animation you want,like above 

mAnimatorSet.setDuration(2000); //set duration for animations 
    mAnimatorSet.start(); 

この例では、同時にターゲットビュー(imgView)上のすべての3つのアニメーションを開始します、あなたはまた、playSequentiallyを使用することができます.....

完全な例については​​

関連する問題