में दृश्य देखने का निर्धारण करें, मैं my custom LayoutManager में अनुमानित एनिमेशन का समर्थन करना चाहता हूं जब आइटम दृश्यमान स्क्रीन सीमाओं से दृश्यमान बिंदु से बाहर स्थानांतरित हो जाता है।लेआउटमैनेजर प्री-लेआउट
सभी भरने के संचालन मैं onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state)
में करता हूं।
एक प्रलेखन पूर्व लेआउट चरण में भविष्य कहनेवाला एनिमेशन का समर्थन करने के (state.isPreLayout()
) मैं परिवर्तन एनीमेशन के लिए प्रारंभिक स्थितियों सेट करना चाहिए (उदाहरण के लिए जगह कहीं दिखाई दे रहा विचारों) के अनुसार
समस्या यह है कि मैं नहीं कर सकता है प्री-लेआउट में निर्धारित करने का एक तरीका ढूंढें, जो दृश्यों को बाहर से स्थानांतरित किया जा रहा है, क्योंकि मैं केवल रीसाइक्लर व्यू दृश्यों से जुड़े वर्तमान के साथ काम करने में सक्षम हूं और विधि प्री-लेआउट चरण के बाद कहा जाता है। (उदाहरण के लिए onItemsRemoved से पहले पूर्व लेआउट कहा जाता है)
यह LayoutManager
साथ बग है या मैं किसी भी तरह पूर्व लेआउट जो विचारों जल्दी ही ले जाए जा रहे हैं में निर्धारित कर सकते हैं?
पीएस: मैं दृश्य बिंदु से बाहर की भविष्यवाणी एनीमेशन को बनाए रखने में सक्षम हूं, क्योंकि मैं दृश्य दृश्यों के माध्यम से लूप करने में सक्षम हूं और recycler.convertPreLayoutPositionToPostLayout
के साथ निर्धारित करता हूं कि कौन से स्थानांतरित किए जा रहे हैं।
//childViews is an iterable over RecyclerView items
for (View view : childViews) {
RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) view.getLayoutParams();
boolean probablyMovedFromScreen = false;
if (!lp.isItemRemoved()) {
//view won't be removed, but maybe it is moved offscreen
int pos = lp.getViewLayoutPosition();
//start view is a first visible view on screen
int lowestPosition = getPosition(startView);
int highestPosition = getPosition(endView);
pos = recycler.convertPreLayoutPositionToPostLayout(pos);
probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition;
}
if (probablyMovedFromScreen) {
//okay this view is going to be moved
}
}
This article मुझे एक बहुत मदद की है, लेकिन यह भी एक एनीमेशन जो मैं की जरूरत है वर्णन नहीं है।
पीपीएस: LinearLayoutManager भी ऐसी एनीमेशन का समर्थन नहीं करता है। (केवल साधारण फीड-इन एनीमेशन है)
फिर भी समाधान की तलाश में ... – Beloo
ग्रेट सवाल। मैं यहाँ भी अटक गया हूँ। अगर आपको कोई समाधान मिलेगा तो कृपया साझा करें। –