31

मैं प्री-लॉलीपॉप डिवाइस (4.x) पर साझा तत्वों का उपयोग करके एक गतिविधि संक्रमण करने की कोशिश कर रहा हूं। क्या यह संभव है? अब तक, मैं इस कोशिश कर रहा हूँ:क्या प्री-लॉलीपॉप उपकरणों के साथ संगत गतिविधि/फ्रैगमेंट संक्रमण हैं?

public class RewardDetail extends ActionBarActivity { 
    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     ... 

     ViewCompat.setTransitionName(imageView, TRANSITION_NAME); 
    } 

    ... 

    public static void launch(ActionBarActivity activity, View transitionView, WelcomeReward detailData) { 
     ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, TRANSITION_NAME); 
     Intent intent = new Intent(activity, RewardDetail.class); 
     intent.putExtra(PARAM_DATA, detailData); 
     ActivityCompat.startActivity(activity, intent, options.toBundle()); 
    } 
} 

से बुलाया:

@Override 
public void onClick(final View v) { 
    int position = recyclerView.getChildPosition(v); 
    WelcomeReward welcomeReward = data.get(position); 
    RewardDetail.launch(WelcomeRewardActivity.this, v.findViewById(R.id.reward_view), welcomeReward); 
} 

लेकिन यह एक "नियमित" संक्रमण (कोई साझा तत्व) का परिणाम है। कोई विचार?

संपादित

इस वीडियो के अनुसार, यह किया जा सकता है:

https://www.youtube.com/watch?v=RhiPJByIMrM&index=8&list=WL

वहाँ एक पुस्तकालय पहले से ही पूर्व लॉलीपॉप के लिए इस को लागू है?

+2

आप देख रहे हैं पूर्व लॉलीपॉप में यह करने के लिए एक तरह से करने के लिए, आप एक उदाहरण के रूप में इस वीडियो का उपयोग कर सकते हैं। youtube.com/watch?v=CPxkoe2MraA (ध्यान दें कि इसे लागू करने के लिए और अधिक काम की आवश्यकता है)। –

+0

समर्थन पुस्तकालय 24.2.0 में एक आशाजनक अद्यतन था - https://developer.android.com/topic/libraries/support-library/revisions.html#24-2-0-api-uproidates android.support.transition के साथ पैकेज लेकिन यह केवल दृश्य-स्तर के लिए एपीआई समर्थित है! – Oleksandr

उत्तर

16

नहीं, पूर्व-लॉलीपॉप उपकरणों पर गतिविधि/टुकड़ा संक्रमण संभव नहीं है। documentation के अनुसार:

अतिरिक्त लॉन्च जानकारी के साथ एक गतिविधि शुरू करें, यदि सक्षम हो।

एंड्रॉइड 4.1+ अतिरिक्त विकल्प पेश किए गए थे ताकि गतिविधि लॉन्च एनिमेशन पर अधिक नियंत्रण की अनुमति दी जा सके। उपलब्ध होने पर इन एनिमेशन का उपयोग करने के लिए एप्लिकेशन इस विधि का उपयोग ActivityOptionsCompat के साथ कर सकते हैं। प्लेटफ़ॉर्म के संस्करणों पर चलने पर, जहां यह सुविधा मौजूद नहीं है, गतिविधि सामान्य रूप से लॉन्च की जाएगी।

जॉर्ज माउंट का जवाब this StackOverflow question पर भी देखें।

+0

तो ... यदि लॉलीपॉप में गतिविधि/खंड संक्रमण केवल संभव है, तो क्या इसका मतलब यह है कि कुछ Google ऐप्स संक्रमण को प्राप्त करने के लिए अधिक जटिल दृष्टिकोण (जैसा कि आपने प्रश्न की टिप्पणी में प्रदान किया है) का उपयोग करते हैं? मैं वास्तव में उत्सुक हूं कि Google कैलेंडर और इसे कम संस्करणों में कैसे काम करते हैं .. – Qianqian

+0

Google कैलेंडर और Google Keep ने शायद ऐसा करने के लिए अपनी खुद की कस्टम लाइब्रेरी लागू की है ... कोई आधिकारिक API नहीं है जो प्री-लॉलीपॉप डिवाइस का समर्थन करता है। –

+0

आपको बहुत धन्यवाद, @ एलेक्स लॉकवुड। मुझे लगता है कि मेरा भ्रम अब खत्म हो गया है। – Qianqian

2

के लिए गतिविधि और टुकड़ा बदलाव के लिए इस पुस्तकालय की जाँच कर सकते हैं फैंसी लॉलीपॉप गतिविधि/टुकड़ा बदलाव उपलब्ध पूर्व लॉलीपॉप (के उपयोग के बिना नहीं कर रहे हैं एक तृतीय पक्ष लाइब्रेरी), आप अभी भी गतिविधियों के बीच संक्रमण के लिए उपयोग की जाने वाली एनीमेशन को ओवरराइड कर सकते हैं।

प्रारंभ करने से पहले/शुरू करने के ठीक पहले एक्टिविटी() आप [Activity.overridePendingTransition] (http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int) पर कॉल कर सकते हैं)। जब आप अपनी गतिविधि छोड़ते हैं, तो उसी विधि को कॉल करें।

इसी प्रकार आप एक संक्रमण के दौरान उपयोग करने के लिए एक कस्टम एनीमेशन परिभाषित करने के लिए ActivityOptionsCompat का उपयोग कर सकते हैं।

ActivityOptionsCompat opts = 
    ActivityOptionsCompat.makeCustomAnimation(getActivity(), R.anim.in, R.anim.out); 
startActivity(intent, opts.toBundle()); 
2

एक समर्थन पुस्तकालय है, लेकिन यह 5.0 से नीचे एंड्रॉइड संस्करणों पर (सभी) संक्रमण का समर्थन नहीं करता है।लेकिन वहाँ कुछ विकल्प हैं:

अनधिकृत संगतता पुस्तकालयों
https://github.com/andkulikov/transitions-everywhere
https://github.com/takahirom/PreLollipopTransition
https://github.com/lgvalle/Material-Animations

एंड्रॉयड किटकैट
http://www.doubleencore.com/2013/11/new-transitions-framework/ और एक नमूना अपने एसडीके नमूने फ़ोल्डर में पाया।

पहले इस सवाल का यहाँ का डुप्लिकेट करने के लिए प्रकाशित किया गया था: https:: // www https://stackoverflow.com/a/27344471/1683141

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