जवाबों:
आप इसके साथ कर सकते हैं Activity.overridePendingTransition()
। आप XML संसाधन फ़ाइल में सरल संक्रमण एनिमेशन को परिभाषित कर सकते हैं।
onCreate
कार्य में कर सकते हैं ।
यहाँ दो गतिविधियों के बीच एक अच्छा चिकनी फीका करने के लिए कोड है ..
एक फाइल बनाएं जिसका नाम fadein.xml
मेंres/anim
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />
एक फाइल बनाएं जिसका नाम fadeout.xml
मेंres/anim
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2000" />
आप से फीका करने के लिए चाहते हैं गतिविधि एक करने के लिए गतिविधि बी , में निम्नलिखित डाल onCreate()
के लिए विधि गतिविधि बी । setContentView()
मेरे लिए काम करने से पहले ।
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
यदि आपके लिए फीके बहुत धीमे हैं, तो android:duration
ऊपर xml फ़ाइलों में कुछ छोटा करने के लिए बदलें ।
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
उन फ़ाइलों को देखने से आपको अपने कस्टम एनिमेशन में सुधार करने के तरीके पर संकेत मिल सकते हैं (जैसे कि फीका करने की तुलना में पिछले लंबे समय में फीका बनाकर)।
fadein
और fadeout
करने के लिए भूल नहीं है fade_in
और fade_out
। दान जे के पद से
overridePendingTransition()
बाद finish()
और / या सही कॉल करना चाहिए startActivity()
। मैं नई गतिविधि शुरू करने के तुरंत बाद फोन करके इस तरह एक अच्छा फीका पाने में सक्षम था।
यह करने के लिए एक आसान तरीका है:
<style name="WindowAnimationTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>
<style name="AppBaseTheme" parent="Theme.Material.Light.DarkActionBar"> <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item> </style>
बस :)
हाँ। आप ओएस को बता सकते हैं कि आप अपनी गतिविधि के लिए किस तरह का संक्रमण चाहते हैं।
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setWindowAnimations(ANIMATION);
...
}
जहाँ ANIMATION एक पूर्णांक है जो OS में निर्मित एनीमेशन का संदर्भ देता है।
Res> anim> fadein.xml बनाएं
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
Res> anim> fadeout.xml बनाएं
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
Res में> मान> स्टाइल। xml
<style name="Fade">
<item name="android:windowEnterAnimation">@anim/fadein</item>
<item name="android:windowExitAnimation">@anim/fadeout</item>
</style>
गतिविधियों में शामिल करें ()
getWindow().getAttributes().windowAnimations = R.style.Fade;
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
डिफ़ॉल्ट एनिमेशन की सूची के लिए देखें: http://developer.android.com/reference/android/R.anim.html
वास्तव में fade_in
और fade_out
एपीआई स्तर 1 और ऊपर के लिए है।
मैं अपनी डिफ़ॉल्ट गतिविधि एनीमेशन को अधिलेखित करता हूं। मैं इसे एपी 15 में परीक्षण करता हूं कि यह सुचारू रूप से काम करता है। यहाँ समाधान है कि मैं का उपयोग करें:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
</style>
<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
Res फोल्डर के तहत ऐनिमेटेड फोल्डर बनाएं और फिर यह चार एनीमेशन फाइल्स बनाएं:
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
आप मेरा नमूना प्रोजेक्ट डाउनलोड कर सकते हैं ।
बस इतना ही... :)
यहाँ दो गतिविधि के बीच एक अच्छा सुचारू करने के लिए कोड है।
बाएं से दाएं को चिकना प्रभाव
रेस / ऐनिमेशन में स्लाइड_इन_ राइट.एक्सएमएल और स्लाइड_आउट_राइट.एक्सएमएल नामक फाइल बनाएं
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="100%" android:toXDelta="0%" />
<alpha android:duration="5000" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="0%" android:toXDelta="-100%"/>
<alpha android:duration="5000" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>
दाएं से बाएं ओर का सहज प्रभाव
रेस / ऐनिमेशन में एक फाइल बनाएं जिसे एनीमेशन_सेंटर.एक्सएमएल और ऐनिमेशन_लीव.एक्सएमएल कहा जाता है
animation_enter.xml
<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>
animation_leave.xml
<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>
एक गतिविधि से दूसरी गतिविधि पर नेविगेट करें
Intent intent_next=new Intent(One_Activity.this,Second_Activity.class);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right);
startActivity(intent_next);
finish();
4. वापस प्रेस घटना या एक गतिविधि के लिए दूसरी गतिविधि से नेविगेट
Intent home_intent = new Intent(Second_Activity.this, One_Activity.class);
overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave);
startActivity(home_intent);
finish();
overridePendingTransition
तुरंत बाद : startActivity developer.android.com/reference/android/app/...
आप Android 1.5 में ओवरराइडिंग ट्रेंडिंग का उपयोग नहीं कर सकते। overridePendingTransistion Android 2.0 पर आया।
यदि आप बिना किसी त्रुटि के इस के माध्यम से जाने वाले हैं, तो आपको साधारण एनिमेशन (या आप खुद) का उपयोग करके लक्ष्य (1.5 या उच्चतर) के लिए संकलन करना होगा या आपको ओवरराइडिंगट्रांसट्रिशन का उपयोग करके लक्ष्य (2.0 या उच्चतर) के लिए संकलन करना होगा।
सारांश: आप एंड्रॉइड 1.5 में ओवरराइडिंग ट्रेंडिंगट्रिशन का उपयोग नहीं कर सकते हैं ।
हालांकि आप OS में बिल्ट-इन एनिमेशन का उपयोग कर सकते हैं।
आकाशगंगा उपकरणों में:
आपको यह सुनिश्चित करने की आवश्यकता है कि आपने सेटिंग> डेवलपर विकल्प का उपयोग करके इसे डिवाइस में बंद कर दिया है:
ActivityCompat.startActivity () वर्क्स API> 21 का उपयोग करें।
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE);
ActivityCompat.startActivity(activity, intent, options.toBundle());
एंड्रॉइड के कुछ संस्करण कस्टम Activity
ट्रांज़िशन का समर्थन करते हैं और कुछ (पुराने डिवाइस) नहीं करते हैं। यदि आप कस्टम बदलावों का उपयोग करना चाहते हैं, तो यह जाँचना अच्छा है कि क्या Activity
हैoverridePendingTransition()
, विधि के रूप में पुराने संस्करणों पर ऐसा नहीं है।
यह जानने के लिए कि विधि मौजूद है या नहीं, प्रतिबिंब एपीआई का उपयोग किया जा सकता है। यहां सरल कोड है जो मौजूद होने पर विधि की जांच करेगा और वापस करेगा:
Method mOverridePendingTransition;
try {
mOverridePendingTransition = Activity.class.getMethod(
"overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } );
/* success */
} catch (NoSuchMethodException nsme) {
/* failure, this version of Android doesn't have this method */
}
और फिर, हम अपने स्वयं के संक्रमण को लागू कर सकते हैं, अर्थात यदि मौजूद है तो इस विधि का उपयोग करें:
if (UIConstants.mOverridePendingTransition != null) {
try {
UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
यहाँ, एक उदाहरण के रूप में, साधारण फीका और फीका-आउट एनिमेशन संक्रमण प्रदर्शन के लिए उपयोग किए गए थे।
एनीमेशन में ज़ूम आउट करें
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
startActivity(i);
finish();
zoom_enter
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
zoom_exit
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:fillAfter="true"
android:duration="500" />
overridePendingTransition
नीचे दिए गए सभी- संबंधित उत्तरों पर लागू होता है :(0, 0)
यदि आप कोई एनीमेशन नहीं चाहते हैं तो आप पास कर सकते हैं ।