2012-03-30 8 views
24

ठीक है, इसलिए मेरे पास एक गतिविधि है जहां मेरे पास एकाधिक छवि दृश्य हैं और जब आप उस पर क्लिक करते हैं तो ImageView फीका होगा और वापस फीका होगा। मैं क्या कोशिश कर रहा हूं यह पता लगाने के लिए कि मैं एक छवि दृश्य पर क्लिक कैसे कर सकता हूं और एनीमेशन शुरू कर सकता हूं और जब मैं दूसरे पर क्लिक करता हूं और एनीमेशन अभी भी चल रहा है तो यह दूसरे को अनदेखा कर देगा। मुझे लगता है कि मुझे एनीमेशन लिस्टनर के साथ कुछ करने की ज़रूरत है, लेकिन मैं यह नहीं समझ सकता कि एनीमेशन चल रहा है या नहीं, इससे पहले कि मैं एक नई एनीमेशन शुरू करूं या नहीं। मैंने शपथ ली थी कि मैंने एक उदाहरण देखा है, लेकिन मैंने दिन की तलाश की है और अब यह नहीं मिल रहा है, मुझे उम्मीद है कि कोई यहां मदद करने में सक्षम होगा ..... नीचे मेरे लिए कोड है एनीमेशन:एंड्रॉइड - यह देखने के लिए कि कैसे एनीमेशन नई एनीमेशन शुरू करने से पहले चल रहा है

// Create Animation 
protected void fadeAnimation() { 
    tempImg.startAnimation(fadeout); 
    //Allow animation to finish 
    mHandler.postDelayed(new Runnable() { 
     public void run() { 
     tempImg.startAnimation(fadein); 
     } 
    }, 1000); 
} 

उत्तर

29

मैं दोनों fadeout संभालने रहा हूँ और fadein Animation वस्तुओं रहे हैं।

fadeout.hasEnded() का उपयोग यह जांचने के लिए करें कि पहले अपना दूसरा शुरू करने से पहले क्या समाप्त हो गया है या नहीं। इसके बजाय पाश के लिए एक और धागा अगर एक एनीमेशन समाप्त हो गया है, तो आप एक एनीमेशन श्रोता इस्तेमाल कर सकते हैं, कुछ इस तरह कर रही जाँच में संभवतः होने के http://developer.android.com/reference/android/view/animation/Animation.html

+5

एनीमेशन अभी तक नहीं चलने पर क्या होता है, इसलिए यह एक झूठी नतीजे वापस नहीं करेगा जिससे एनीमेशन रद्द हो जाए। मैं इसे एक शॉट दूंगा लेकिन यह पहला विचार है जो मेरे दिमाग में आया था। किसी भी तरह से मदद के लिए धन्यवाद। –

+0

ऐसा करने के लिए, सिंटैक्स में कुछ चीजें बदलनी पड़ीं और यह बहुत अच्छा काम कर रहा था। मैं वास्तव में सहायता के लिए आभारी हूं। बहुत बहुत धन्यवाद! –

+1

@ChrisD मुझे एक ही समस्या का सामना करना पड़ रहा है। मैंने हैइंडेड() फ़ंक्शन का उपयोग करके जांच की लेकिन समस्या पहली बार हमेशा झूठी लौट रही है। क्या आप मेरी मदद कर सकते हैं? – Kunu

2

:

Animation वर्ग के बारे में अधिक जानकारी के लिए यहाँ देखें

// Create Animation 
protected void fadeAnimation() { 
    fadeout.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 
     @Override 
     public void onAnimationEnd(Animation animation) { 
       tempImg.startAnimation(fadein); 
     }    
     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 

    }; 
    tempImg.startAnimation(fadeout); 

} 

इस तरह के समाधान के साथ आपको एनीमेशन समाप्त होने पर सक्रिय रूप से जांचने की आवश्यकता नहीं होगी और पिछली एनीमेशन की अवधि के साथ समय लगेगा।

एनीमेशन समाप्त होने के ठीक बाद ऑनएनीमेशन एंड (एनीमेशन) निकाल दिया गया है। यह डेवलपर विकल्पों "ऑन" और एनीमेशन गति के साथ "ऑफ" पर सेट उपयोगकर्ताओं के मुद्दे को भी हल करता है।

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