5

से बाहर निकलने पर ठीक से काम नहीं कर रहा है, खंड को बदलते समय, मैं एंड्रॉइड लॉलीपॉप संस्करण के लिए उपलब्ध स्लाइड एनीमेशन का उपयोग कर रहा हूं। यह इस विशेष प्रतिस्थापन के लिए अपेक्षित काम करता है, लेकिन बैक बटन दबाकर यह पहले वर्तमान खंड & पर वापस आ जाता है, फिर एनीमेशन (स्लाइड आउट) दर्ज करने के विपरीत निष्पादित किया जाता है।एंड्रॉइड लॉलीपॉप - सेटेंटर्ट्रांशन() टुकड़े के लिए

private void replaceContentFrameByFragment(Fragment replaceBy, String replaceByFragmentTag) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Slide slide = new Slide(Gravity.BOTTOM); 
      slide.setDuration(1000); 
      replaceBy.setEnterTransition(slide); 
    } 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.content_frame, replaceBy, replaceByFragmentTag); 
    fragmentTransaction.addToBackStack(null); 
    fragmentTransaction.commitAllowingStateLoss(); 
} 

तो, स्लाइड की रिवर्स एनीमेशन समाप्त होने के बाद ही वापस लौटने के लिए खंड को कैसे मजबूर किया जाए? मैंने देखा कि गतिविधि के पास विधि खत्म होने के बाद ट्रांसफर() प्रदान किया गया है। क्या फ्रैगमेंट के लिए कुछ समान है?

+0

यहाँ बदलाव के बारे में अधिक पढ़ें: www.androiddesignpatterns.com/2014/12/activity-fragment-content-transitions-in-depth-part2.html – pskink

+0

अलग वापसी संक्रमण भी शो जोड़ना वही व्यवहार स्लाइड स्लाइड = नई स्लाइड (गुरुत्वाकर्षण। BOTTOM); स्लाइड.सेट अवधि (1000); replaceBy.setEnterTransition (स्लाइड); \t \t स्लाइड = नई स्लाइड (गुरुत्वाकर्षण। BOTTOM); स्लाइड.सेट अवधि (1000); प्रतिस्थापित By.setReturnTransition (स्लाइड); – Ankur

+0

क्या आप जिस व्यवहार को देख रहे हैं उसका स्क्रीन कैप्चर पोस्ट कर सकते हैं (यह बताना मुश्किल है कि आप वास्तव में क्या वर्णन कर रहे हैं)। एंड्रॉइड स्टूडियो में एक स्क्रीन कैप्चर टूल है जो आसान हो सकता है। –

उत्तर

0

मैं मोटे तौर पर एक ही पैटर्न के साथ एक ही समस्या आ रहा था और मेरे टुकड़े संक्रमण पोस्ट करके उसके चारों ओर पाने के लिए कर रहा था:

new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     page.setEnterTransition(new Slide()); 
     getFragmentManager() 
       .beginTransaction() 
       .replace(R.id.root_layout, page, "current") 
       .commit(); 
    } 
}); 
नहीं

यकीन है कि क्यों इस समस्या का समाधान (या अगर यह पूर्ण रूप से सही है समाधान), लेकिन यह मेरे लिए काम किया।

0

मुझे एक ही समस्या थी, फ्रैगमेंट बी -> ए से वापसी, फ्रैगमेंट बी एक अतिरिक्त स्लाइड संक्रमण कर रहा है। इसके चारों ओर घूमने के लिए, मैंने स्लाइड की तुलना में कम समय के setReturnTransition() के लिए एक फीका संक्रमण डाला जो काफी अच्छा दिखता है (क्योंकि यह पिछले खंड में घुल जाता है)। इस के लिए कोड है:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    Slide slideRight = new Slide(Gravity.RIGHT); 
    slideRight.setDuration(200); 
    fragment.setEnterTransition(slideRight); 
    Fade fade = new Fade(); 
    fade.setDuration(100); 
    fragment.setReturnTransition(fade); 
} 
संबंधित मुद्दे