2013-02-04 20 views
31

में एनीमेशन अक्षम करना मैं अपने कस्टम ViewPager में संक्रमण के लिए सभी एनिमेशन अक्षम करना चाहता हूं। यह दृश्य पेजर चार टैब शामिल -और प्रत्येक टैब एक Fragment लोड करता है - और क्या दृश्य पेजर करता टैब स्विच करने के है: उदाहरण के पहले टैब के लिए सूचकांक है, दूसरा, नक्शा है आदिViewPager

समस्या यह है कि यदि है , पहला टैब चुना गया है, मैं चौथे टैब पर क्लिक करता हूं, मैं देख सकता हूं कि ViewPager दूसरे और तीसरे टैब के माध्यम से कैसे जाता है और चौथे स्थान पर रुक जाता है, और मैं नहीं चाहता कि ऐसा हो।

मैं इस ViewPager एक setAnimationnull हर बार उपयोगकर्ता एक नया टैब प्रदर्शित करने के लिए चुनता है करने के लिए उपयोग करने की कोशिश कर के लिए सभी एनिमेशन को निष्क्रिय करने की कोशिश की, लेकिन यह अभी भी काम नहीं करता।

इसे प्राप्त करने के लिए कोई विचार, कृपया? अग्रिम धन्यवाद!

संपादित करें: मैं भी प्रत्येक Fragment के लिए onCreateAnimation लेकिन अभी भी काम नहीं कर रहा ओवरराइड करने की कोशिश की

+0

आपका मतलब है कि आप स्वाइप जेश्चर क्षमता को भी हटाना चाहते हैं, मैं समझता हूं। यदि ऐसा है, तो ग्रहण में 4.0 + के लिए एक नई परियोजना बनाने का प्रयास करें, यह आपको स्वाइप करने योग्य और गैर-स्वाइप करने योग्य टैब दोनों के साथ एक खाली प्रोजेक्ट बनाने देगा, अंतरों की जांच करें, यह सबसे तेज़ तरीका है और आप बहुत सारे कोड देख सकते हैं। – MariusBudin

+0

अच्छी तरह से, वास्तव में हम क्षैतिज रूप से स्वाइप नहीं कर सकते हैं, क्योंकि ग्राहक इसे पसंद नहीं करते हैं, इसलिए मैं केवल एनिमेशन को हटाना चाहता हूं (स्वाइपिंग पहले ही अक्षम है) – noloman

उत्तर

102

मैं अंत में पता चला: मुद्दा सिर्फ false के लिए एक अतिरिक्त पैरामीटर, जो चिकनी स्क्रॉल है साथ mViewPager.setCurrentItem(position) फोन करके हल किया जा सकता ViewPager के लिए। इसके बाद, स्क्रॉल बिना किसी चिकनाई के किया जाएगा और इस प्रकार एनिमेशन नहीं देखा जाएगा।

+0

इस कोड को कहां रखा जाए? यह – JayVDiyk

+3

@JayVDiyk उदाहरण काम नहीं करता प्रतीत होता है। बटन पर इसे इस तरह कॉल करें: 'mViewPager.setCurrentItem (स्थिति, झूठी); ' – vovahost

+0

कोई भी ऐसा करने में भी रुचि रख सकता है: http://stackoverflow.com/a/13437997/3075340 – Micro

30

यहाँ एक और समाधान है:

  • उपवर्ग ViewPager (अपने कस्टम ViewPager)
  • अवहेलना दो setCurrentItem तरीकों

कोड स्निपेट:

@Override 
public void setCurrentItem(int item, boolean smoothScroll) { 
    super.setCurrentItem(item, false); 
} 

@Override 
public void setCurrentItem(int item) { 
    super.setCurrentItem(item, false); 
} 

सेटिंग चिकनीस्क्रॉल से झूठी, आप स्क्रॉल एनीमेशन अक्षम कर रहे हैं।