मैं बहुत हाल ही में SnapHelper
क्रम में Support Library v24
अंदर का प्रयोग करके बहुत पसंद में Google Play स्टोर एक अच्छा क्षैतिज RecyclerView
के लिए शुरू कर दिया।RecyclerView और SnapHelper -> बोले मिल/लक्षित दृश्य
मेरा प्रश्न सरल है।
एक RecyclerView.OnScrollListener
मैं जब स्क्रॉल राज्य निपटाने (ज्यादा ViewPager.OnPageChangedListener
साथ की तरह है अधिसूचित किया जा सकता का उपयोग करके। यह महत्वपूर्ण है क्योंकि जब स्क्रॉल बसने है, मैं विचार है कि डिफ़ॉल्ट व्यवहार के रूप केंद्रित किया जाएगा चेतन करने की जरूरत है LinearSnapHelper
की। यही कारण है कि एनीमेशन पता चलता है कि फोकस अभी के लिए जल्द ही होने वाली हो केंद्रित आइटम।
में लाया जाता है, मैं दृश्य जब स्क्रॉल राज्य के माध्यम से निष्क्रिय है केंद्रित है कि पाने में कामयाब रहे निम्नलिखित पंक्ति:
final int centered = (llm.findLastCompletelyVisibleItemPosition() - llm.findFirstCompletelyVisibleItemPosition())/2 + llm.findFirstVisibleItemPosition(); // where llm is my LinearLayoutManager
समस्या यह है कि स्क्रॉल पूरा होने पर एनीमेशन शुरू करना अजीब है: स्क्रॉल निष्क्रिय होने पर मुझे एनीमेशन को आसानी से चलाने की ज़रूरत है ताकि जब स्क्रॉल निष्क्रिय हो, तो एनीमेशन भी पूरा हो जाता है।
तो जैसा कि आप देख सकते हैं, मुझे यह पता लगाना मुश्किल है कि मेरे RecyclerView
का कौन सा आइटम एक केंद्रित होगा।
यहां समाधान हैं जिनसे मैंने अभी तक प्रयास किया है।
स्क्रॉल स्थिति
RecyclerView.SCROLL_STATE_SETTLING
पर सेट होने पर मैंने उसी गणना का उपयोग करने की कोशिश की। दुर्भाग्यवश, स्क्रॉल निष्क्रिय नहीं होने पर एडाप्टर सेfindVisiblePosition
विधियों को कॉल करना एक बुरा विचार है: स्क्रॉल की गति के आधार पर, दृश्यमान आइटम, जब इन तथाकथित विधियों को लागू किया जाता है, तो स्क्रॉल होने पर बिल्कुल वही नहीं हो सकता है पूर्ण। दरअसल यह मुझे बताएगा कि कॉल के समय कौन सी चीजें दिखाई दे रही हैं। यही कारण है कि कुल समझ में आता है लेकिन मुझे लगता है कि खोजने के लिए बाहर की कोशिश करने के लिए आवश्यक ...मैंने कोशिश की विस्तार
LinearSnapHelper
ताकि जबonFling(...)
मैं या तोfindSnapView(...)
का उपयोग का मानना है कि हो जाएगा प्राप्त करने के लिए कर सकते हैं कहा जाता है बोले या का उपयोग करें उम्मीद है कि स्क्रॉल पूरा होने पर मुझे कौन सा दृश्य केंद्रित किया जाना चाहिए;मैं भी कोशिश की, जब स्क्रॉल राज्य
RecyclerView.SCROLL_STATE_SETTLING
है, (विभिन्न कड़ी चोट ताकत & गति के साथ की कोशिश कर रहा)findSnapView(...)
, कोई भी कई परीक्षण पारित कर दिया उपयोग करने के लिए। कुछ लोगों ने इसे कुछ मौकों पर सही पाया लेकिन विभिन्न परिस्थितियों में यह गलत हो गया, इसलिए समाधान को अनुपयोगी बना दिया गया।
LinearSnapHelper
के अंदर देखा गया मुझे लगता है कि मैंने इसे समझना शुरू कर दिया है, किसी भी तरह, एक स्वाइप के बाद, यह वर्ग कुल स्क्रॉल की गणना करता है और स्क्रॉल पूर्ण होने से पहले आवश्यक होने पर कई अवसरों पर विचारों को स्नैप करता है (स्क्रॉल करने की दूरी की मात्रा) इसलिए यह जानना कि कौन सा दृश्य अंतिम स्नैप दृश्य होगा ... जब तक मुझे यह सब गलत नहीं मिला क्योंकि स्नैप केंद्रित नहीं है?
वैसे भी, मेरा मुख्य प्रश्न यह है: मुझे कैसे पता चलेगा कि मेरे RecyclerView
की कौन सा वस्तु स्वाइप के बाद केंद्रित होगी, चाहे गति और गति की गति के बावजूद?
धन्यवाद, लेकिन मैं यह जानना चाहता हूं कि कौन सा आइटम केंद्रित होगा ** ** स्वाइप के बाद स्वाइप नहीं होने पर। – Mackovich