मेरे पास कुछ मूल आइटम सजावट है जो ItemDecoration.onDrawOver
विधि में कुछ सामान खींचती है।आइटम एनीमेशन की अवधि के लिए रीसाइक्लर व्यू आइटम सजावट ड्राइंग को कैसे अक्षम करें
यह RecyclerView
भी DefaultItemAnimator
पर सेट है। एनिमेशन काम कर रहे हैं, सब बढ़िया है। एक चीज़ को छोड़कर।
जब सभी मौजूदा आइटम इस एडाप्टर में एक नए आइटम सेट के साथ बदल दिए जाते हैं, तो एनीमेशन चल रहा है, जबकि सजावट दिखायी जा रही है।
मुझे उन्हें छिपाने का एक तरीका चाहिए। जब एनीमेशन खत्म होता है, तो उन्हें दिखाया जाना चाहिए, लेकिन जब यह चल रहा है, तो उन्हें छिपाना होगा।
public void onDrawOver(..., RecyclerView.State state) {
if(state.willRunPredictiveAnimations() || state.willRunSimpleAnimations()) {
return;
}
// else do drawing stuff here
}
लेकिन यह मदद नहीं कर रहा है:
मैं निम्नलिखित की कोशिश की। सजावट केवल एनीमेशन की छोटी अवधि के लिए हटा दी जाती है, लेकिन फिर भी यह तब भी दिखाई देती है जब यह अभी भी चल रही है।
इसके अलावा सेटअप में RecyclerView.Adapter
शामिल है जिसमें स्थिरता आईडी() (उस मामले में मामला है)।
इस दृष्टिकोण का उपयोग सजावट को एक पल के लिए गायब होने का कारण बनता है और फिर एनीमेशन के बाद फिर से दिखाई देता है, जिसे मैंने सजावट को एनिमेट करने के रूप में अच्छा नहीं देखा। हालांकि, वैसे भी +1 करें क्योंकि 'getItemAnimator()। IsRunning() 'उपयोगी जानकारी है। :) –
@LorneLaliberte हाँ, मैंने पाया कि दुर्भाग्यपूर्ण साइड इफेक्ट भी। यदि आपको चारों ओर एक रास्ता मिल रहा है, तो कृपया साझा करें ... – dimsuz
एक ऐसे दृष्टिकोण के लिए मेरा उत्तर देखें जो सजावट को डिफ़ॉल्ट एनिमेशन के साथ एनिमेट करके हल करता है। –