2012-09-26 22 views
6

मेरे पास एक व्यूफ्लिपर है जो हर 5 सेकंड में ऑटो-फ्लिप करने के लिए सेट होता है। विवरण में से कुछ बाहर छोड़ रहा है, यह इस तरह दिखता है और ठीक काम करता है:एंड्रॉइड व्यूफ्लिपर को लूपिंग से कैसे रोकें?

ViewFlipper flipper = (ViewFlipper) findViewById(R.id.myflipperid); 

flipper.setFlipInterval(5000);        
flipper.setInAnimation(inFromRightAnimation()); 
flipper.setOutAnimation(outToLeftAnimation()); 

flipper.startFlipping(); 

हालांकि, मैं एक मामला है जहाँ मैं ऑटो flipping बल्कि फिर से शुरू करने के आसपास पाशन से पिछली बार देखे जाने पर रोकने के लिए, चाहते हैं । ऐसा प्रतीत नहीं होता है कि व्यूफ्लिपर या उसके द्वारा प्राप्त कक्षाओं में से कोई भी लूपिंग नियंत्रण विधि है।

मैं व्यूफ्लिपर को अपने बच्चे के विचारों के माध्यम से आखिरी बार हिट करने के लिए कैसे रोक सकता हूं?

नोट: here दिए गए उत्तर मेरे मामले पर लागू नहीं होते हैं, क्योंकि मुझे अपनी सूची के अंत में ViewFlipper को पकड़ने की आवश्यकता है, यानी, उपयोगकर्ता इनपुट के आधार पर। धन्यवाद।

उत्तर

6

मैंने यह स्वयं नहीं किया है, लेकिन मुझे आशा है कि इससे मदद मिलेगी।

सबसे पहले, अपने व्यूफ्लिपर की फ्लिप घटनाओं को सुनने का प्रयास करें। चूंकि आप एनीमेशन का उपयोग कर रहे हैं। आप यहां पोस्ट किए गए समाधान का उपयोग कर सकते हैं: https://stackoverflow.com/a/3813179/1594522

फिर, ऑनएनीमेशन एंड() पर, आप देख सकते हैं कि व्यूफ्लिपर अपने अंतिम बच्चे के दृश्य पर है या नहीं। यदि यह पहले से ही अपने अंतिम बच्चे के दृश्य पर है, तो flipper.stopFlipping() पर कॉल करें।

आशा है कि मदद करता है! :)

+1

हां, यह वही है जो मैंने कल किया था। आपने मुझे जवाब पोस्ट करने में हराया, इसलिए मैं आपको चेकमार्क दूंगा! मेरा वास्तविक समाधान नीचे पोस्ट किया गया है। – gcl1

0

बस सूची के आकार मिलता है, और फिर अगर हालत में, कहते हैं कि

flipper.stopFlipping() 

यह इस तरह से काम करता है आशा है।

8

यहां उपयोग किया गया समाधान है। जैसा कि here सुझाया गया है, यह चाल एनीमेशन ईवेंट के अंत के लिए सुनना है, और फिर यह देखने के लिए जांचें कि क्या फ्लीपर अंतिम दृश्य पर है या नहीं।

flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() { 

    public void onAnimationStart(Animation animation) {} 
    public void onAnimationRepeat(Animation animation) {} 
    public void onAnimationEnd(Animation animation) { 

     int displayedChild = flipper.getDisplayedChild(); 
     int childCount = flipper.getChildCount(); 

     if (displayedChild == childCount - 1) { 
      flipper.stopFlipping(); 
     } 
    } 
}); 

आपके उत्तरों के लिए धन्यवाद।

+0

आपके उदाहरण में "flipperWall" क्या है? –

+0

क्षमा करें, मैंने घोषणा छोड़ दी है। इस उदाहरण में, फ्लीपरवॉल सिर्फ एक दृश्य फ्लीपर है, इस तरह: व्यूफ्लिपर फ्लिपरवॉल; आपको findViewById(), या प्रोग्रामेटिक रूप से करके, इसे XML फ़ाइल से प्रारंभ करने की आवश्यकता होगी। सौभाग्य! – gcl1

+0

मैंने जवाब संपादित किया है। देखें कि अब और अधिक समझ में आता है या नहीं। –

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