6

मैं कुछ नई सामग्री डिजाइन गतिविधि एनिमेशन को कार्यान्वित करने की कोशिश कर रहा हूं, लेकिन मैंने जो ट्यूटोरियल पढ़े हैं, वे केवल उदाहरण दिखाते हैं जहां एनिमेटेड दृश्य को गतिविधि से संबंधित किया जाता है।सूचियों/ग्रिड/रीसाइक्लिंग दृश्यों का उपयोग करते समय गतिविधि संक्रमण को एनिमेट कैसे करें?

मेरे ऐप में, मैं एक RecyclerView का उपयोग कर रहा है, तो ImageView गतिविधि का हिस्सा नहीं है:

MainActivity    -> Where I call startActivity() 
↳ MainFragment 
    ↳ RecyclerView 
    ↳ RecyclerViewAdapter 
    ↳ ViewHolder 
    ↳ ImageView   -> The hero imageView I'd like to animate 

से मैं क्या पढ़ा, मैं इस तरह नई गतिविधि शुरू करने वाला हूँ:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, (View) mImageView, "hero_image"); 

Intent intent = new Intent(this, SecondActivity.class); 
startActivityForResult(intent, options.toBundle()); 

सवाल यह है कि mImageViewMainActivity से संबंधित नहीं है। मुझे इसे कैसे पास करना है?

+0

"मुख्य गतिविधि से संबंधित नहीं है" तो यह आपकी गतिविधि स्क्रीन में दिखाई नहीं दे रहा है? यदि यह दिखाई देता है तो यह आपकी गतिविधि – pskink

+0

से संबंधित है जिसका मतलब है कि यह गतिविधि में सीधे नहीं बढ़ रहा था। यह एडाप्टर में फुलाया गया है, इसलिए गतिविधि उस दृश्य का संदर्भ नहीं रखती है। – Guilherme

+0

एडाप्टर नहीं है, लेकिन एडाप्टर को देखने के लिए सेट किया गया है, उस छविदृश्य – pskink

उत्तर

1

आपके उदाहरण में, आप गतिविधि को उसी तरह से शुरू करते हैं। दृश्य गतिविधि के दृश्य पदानुक्रम का हिस्सा है, इसलिए कॉल अभी भी मान्य है। जब बाहर निकलने के संक्रमण में होता है, तो गतिविधि के दृश्य पदानुक्रम को निकास संक्रमण में उपयोग किए जाने वाले दृश्यों को बाहर निकालने के लिए खोजा जाता है। यह उन वस्तुओं के साथ वस्तुओं की तुलना करता है जो साझा तत्व हैं ताकि यह साझा तत्वों से बाहर न हो।

जब आप रीसाइक्लिंग व्यू का उपयोग कर रहे हों, तो आपको संभावित पुन: संक्रमण के बारे में चिंता करने की आवश्यकता होगी। RecyclerView किसी भी या सभी दृश्यों को रीसायकल कर सकता है। यदि आपने अपने साझा तत्व (या संभावित साझा तत्व) अद्वितीय नाम नहीं दिए हैं, तो आपको यह सुनिश्चित करने के लिए कि सही दृश्य का उपयोग किया जाता है, आपकोMapSharedElements को लागू करना होगा। मैं हमेशा अनुशंसा करता हूं कि संभावित साझा तत्वों की सूचियों का उपयोग करते समय आप प्रत्येक तत्व को एक अद्वितीय संक्रमण नाम (गतिशील रूप से) देते हैं। इस तरह ढांचा स्वचालित रूप से निर्धारित कर सकता है कि वापस आने पर किस दृश्य का उपयोग करना है।

+0

मुझे लगता है कि मैं समझें कि दृश्य गतिविधि के पदानुक्रम का हिस्सा है, लेकिन मुझे नहीं पता कि 'RecyclerView' के उस विशिष्ट आइटम के उस विशिष्ट 'छवि दृश्य' का संदर्भ कैसे प्राप्त किया जाए। – Guilherme

+0

ऐसा करने के कई तरीके हैं और यह इस बात पर निर्भर करता है कि आपका ऐप कैसे लिखा गया है। यदि साझा एक्टिविटी कॉल को ट्रिगर करने वाले साझा तत्व के पास कोई उपयोगकर्ता क्रिया (श्रोता क्लिक करें) है, तो क्लिक किए गए व्यू को विशिष्ट छवि दृश्य खोजने के लिए findViewById के साथ उपयोग किया जा सकता है। यदि क्लिक किए गए व्यू एक चचेरे भाई हैं तो आपको पदानुक्रम चलना पड़ सकता है। यदि क्लिक संबंधित नहीं है (उदाहरण के लिए, "खुले चेक किए गए आइटम" बटन) आपको दृश्यों का ट्रैक अपने तरीके से रखना होगा। findViewWithTag() या findViewHolderForItemId() सहायक हो सकता है। RecyclerView से सावधान रहें - स्क्रीन से बाहर की कोई भी वस्तु तेज नहीं होगी। –

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

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