दिलचस्प पोस्ट
"अनुपस्थित रिटर्न स्टेटमेंट" के भीतर अगर / के लिए / जबकि ट्रिगर समारोह में गतिशील तालिका नाम के साथ INSERT जीसीसी सी + + लिंकर त्रुटियां: 'XXX के लिए वीटेबल' के लिए अनिर्धारित संदर्भ, 'क्लासनाम :: क्लासैनम ()' के लिए अनिर्धारित संदर्भ एक निर्देशित आलेख में चक्रों का पता लगाने के लिए सर्वश्रेष्ठ एल्गोरिथ्म क्यों जावा बहुरूपता मेरे उदाहरण में काम नहीं करते रिक्त स्थान से स्ट्रिंग विभाजित करें – उद्धृत उपस्ट्रिंग को संरक्षित करें – पायथन में JSON को पार्स करने के लिए PHP पृष्ठ पुनर्निर्देशित \ K में regex का समर्थन jQuery मोबाइल: गतिशील रूप से जोड़ा गया सामग्री का मार्कअप संवर्धन जावा RegEx मेटा वर्ण (।) और साधारण डॉट? इनर क्लास एक्सेस कर सकता है लेकिन मूल्यों को अपडेट नहीं कर सकता – AsyncTask एंड्रॉइड प्लेटफार्म में पुश सूचनाएं JQuery का उपयोग करते हुए एक ड्रॉपडाउन आइटम के चयनित मान प्राप्त करें उसी लाइन पर नए आउटपुट प्रिंट करें

टुकड़ों के बीच संक्रमण चेतन

मैं टुकड़ों के बीच संक्रमण को चेतन करने की कोशिश कर रहा हूं। मुझे निम्नलिखित से जवाब मिला
एंड्रॉइड टुकड़े और एनीमेशन

FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); DetailsFragment newFragment = DetailsFragment.newInstance(); ft.replace(R.id.details_fragment_container, newFragment, "detailFragment"); // Start the animated transition. ft.commit(); 

और मेरे R.anim.slide_in_left

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="50%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_mediumAnimTime" /> </set> 

लेकिन जब मैंने इसे करने की कोशिश की तो यह दिखाया

 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): FATAL EXCEPTION: main 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): java.lang.RuntimeException: Unknown animator name: translate 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:621) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:733) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:919) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.BackStackRecord.run(BackStackRecord.java:578) 02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1217) 

कोई विचार? जब मैंने जांच की कि हनीकॉम्ब एपीआई संदर्भ का translate है मुझसे क्या छूट गया?
क्या टुकड़ों के बीच संक्रमण को चेतन करने का कोई दूसरा तरीका है? धन्यवाद

वेब के समाधान से एकत्रित समाधान "टुकड़ों के बीच संक्रमण चेतन"

आपको नया android.animation फ्रेमवर्क (ऑब्जेक्ट एन्निमेटर्स) का उपयोग FragmentTransaction.setCustomAnimations साथ करना होगा। सेट FragmentTransaction.setCustomAnimations साथ ही FragmentTransaction.setTransition

ApiDemos FragmentHideShow.java से setCustomAnimations का उपयोग करने पर यहां एक उदाहरण है:

 ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); 

और यहाँ Res / animator / fade_in.xml से संबंधित एनीमेटर एक्सएमएल है:

 <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:interpolator/accelerate_quad" android:valueFrom="0" android:valueTo="1" android:propertyName="alpha" android:duration="@android:integer/config_mediumAnimTime" /> 

ध्यान दें कि आप <set> का उपयोग करके कई एनिमेटरों को गठजोड़ कर सकते हैं, जैसा कि आप पुराने एनीमेशन फ्रेमवर्क के साथ कर सकते थे


संपादित करें : चूंकि लोग स्लाइड-इन / स्लाइड-आउट के बारे में पूछ रहे हैं, मैं यहां उस पर टिप्पणी करूंगा।

स्लाइड-इन और स्लाइड-आउट

आप निश्चित रूप से translationX x , translationY , x , और y गुणों को y हैं, लेकिन आम तौर पर स्लाइड में स्क्रीन को बंद करने और स्क्रीन से सामग्री को एनिमेट करना शामिल है। जहाँ तक मुझे पता है कि कोई संक्रमण गुण नहीं हैं जो सापेक्ष मान का उपयोग करते हैं। हालांकि, यह आपको स्वयं को लिखने से रोक नहीं सकता है याद रखें कि प्रॉपर्टी एनीमेशन को ऑब्जेक्टिंग (इस मामले के दृश्यों) पर setXFraction करने वाले और सेटर विधियों की आवश्यकता होती है, इसलिए आप अपने दृश्य उप-वर्ग पर बस अपने स्वयं के getXFraction और setXFraction विधियां बना सकते हैं, जैसे:

 public class MyFrameLayout extends FrameLayout { ... public float getXFraction() { return getX() / getWidth(); // TODO: guard divide-by-zero } public void setXFraction(float xFraction) { // TODO: cache width final int width = getWidth(); setX((width > 0) ? (xFraction * width) : -9999); } ... } 

अब आप 'xFraction' संपत्ति को इस तरह सजीव कर सकते हैं:

res / animator / slide_in.xml :

 <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:valueFrom="-1.0" android:valueTo="0" android:propertyName="xFraction" android:duration="@android:integer/config_mediumAnimTime" /> 

ध्यान दें कि अगर जिस ऑब्जेक्ट में आप एनिमेटिंग कर रहे हैं, उसके माता-पिता के समान चौड़ाई नहीं है, तो चीजें बिल्कुल सही नहीं दिखती हैं, इसलिए आपको अपने उपयोग के केस के अनुरूप अपनी संपत्ति के कार्यान्वयन में बदलाव करने की आवश्यकता हो सकती है।

मैंने ऐसा किया है:

एनिमेशन के साथ टुकड़ों को बदलने के लिए इस विधि को जोड़ें:

 public void replaceFragmentWithAnimation(android.support.v4.app.Fragment fragment, String tag){ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_left); transaction.replace(R.id.fragment_container, fragment); transaction.addToBackStack(tag); transaction.commit(); } 

आपको एनीम फ़ोल्डर में चार एनिमेशन जोड़ना होगा जो संसाधन के साथ सहयोगी है :

enter_from_left.xml :

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set> 

exit_to_right.xml :

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700" /> </set> 

enter_from_right.xml :

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700" /> </set> 

exit_to_left.xml :

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="-100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set> 

आउटपुट:

यहां छवि विवरण दर्ज करें

इसका पूरा हुआ

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

यदि आप अपने आप को लॉलीपॉप और बाद में टाई कर सकते हैं, तो यह ऐसा चाल लगता है:

 import android.transition.Slide; import android.util.Log; import android.view.Gravity; . . . f = new MyFragment(); f.setEnterTransition(new Slide(Gravity.RIGHT)); f.setExitTransition(new Slide(Gravity.LEFT)); getFragmentManager() .beginTransaction() .replace(R.id.content, f, getKey()) .commit(); 

उम्मीद है की यह मदद करेगा।

यहाँ टुकड़ों के बीच / बाहर एनीमेशन स्लाइड है:

 FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.animator.enter_anim, R.animator.exit_anim); transaction.replace(R.id.listFragment, new YourFragment()); transaction.commit(); 

हम एक ऑब्जेक्ट एन्निमेटर का उपयोग कर रहे हैं।

एनीमेटर सबफ़ोल्डर में ये दो एक्सएमएल फाइलें हैं I

enter_anim.xml

 <?xml version="1.0" encoding="utf-8"?> <set> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:propertyName="x" android:valueFrom="2000" android:valueTo="0" android:valueType="floatType" /> </set> 

exit_anim.xml

 <?xml version="1.0" encoding="utf-8"?> <set> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:propertyName="x" android:valueFrom="0" android:valueTo="-2000" android:valueType="floatType" /> </set> 

मुझे उम्मीद है कि किसी को मदद मिलेगी

एंड्रॉइड एसडीके फ्रैग्मेंट ट्रान्ससेक्शन का क्रियान्वयन एक Animator चाहता है, जबकि सहायता लाइब्रेरी एक Animation चाहता है, मुझे क्यों नहीं पूछें, लेकिन क्यों strangeluk की टिप्पणी के बाद मैंने एंड्रॉइड 4.0.3 कोड और सहायता लाइब्रेरी में देखा। एंड्रॉइड एसडीके loadAnimator() का उपयोग करता है और समर्थन लाइब्रेरी loadAnimation() का उपयोग करता है

किसी और के लिए, जो पकड़ा जाता है, सुनिश्चित करें कि ग्राहक को लेनदेन के लिए बनाने / बदलने के लिए कॉल करने से पहले सेटिगएवल एनाममेंट्स को कहा जाता है।