2013-03-21 7 views
18

मेरे पास 2 एनिमेशन हैं जो पहले से ही काम कर रहे हैं, मैं अपनी ट्रेन + एक ही समय में अपनी ट्रेन को फीका करना चाहता हूं। यदि मैं इन पंक्तियों में से 1 निष्पादित करता हूं तो यह काम करता है। लेकिन अगर मैं इसे निष्पादित करने का प्रयास करता हूं, तो केवल 1 काम करेगा .. मुझे वास्तव में कोई समाधान नहीं मिल रहा है।1 imageview एंड्रॉइड पर एकाधिक एनिमेशन

शायद आप मदद कर सकते हैं?

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); 

मैं दोनों एनिमेशन निष्पादित करने के लिए mytrain चाहते ..

मदद के लिए धन्यवाद!

उत्तर

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

'एनीमेशनसेट' –

3

आपको AnimationSet का उपयोग करने की आवश्यकता है, docs देखें। प्रत्येक एनीमेशन के लिए बस addAnimation() पर कॉल करें जिसे आप खेलना चाहते हैं।

+1

addAnimation (trainfade); addAnimation (traintween); सार्वजनिक शून्य addAnimation (एनीमेशन ए) { mytrain.startanimation (ए); } क्या यह इस तरह है? – RobinHo

0

यहाँ एक भी एक्सएमएल फ़ाइल में सभी एनीमेशन का उदाहरण है ...

यह आप में मदद मिलेगी, लेकिन पहले आप 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

आप छविस्विचर का भी उपयोग कर सकते हैं, मुझे लगता है कि यह बेहतर है तो आपके मामले में एनीमेशनसेट

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(); 

इस उदाहरण सभी 3 लक्ष्य दृश्य (imgView) एक ही समय में एनीमेशन शुरू कर देंगे, आप भी playSequentially .....

उपयोग कर सकते हैं

पूर्ण उदाहरण के लिए check this out..

संबंधित मुद्दे