गतिविधि संक्रमण पर फीका एनीमेशन कैसे करें?


89

मैं अपनी लोगो गतिविधि और मेरी मुख्य गतिविधि के बीच एक संक्रमण प्रभाव को कूटबद्ध कर रहा हूं, लेकिन मुझे समस्या है कि गतिविधि को बंद करने से पहले:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="2000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" >
    </alpha>

</set>

मैं केवल गायब प्रभाव प्राप्त करने के लिए इस कोड को कैसे सुधार सकता हूं?

जवाबों:


236

आप एक नया और फीका करने के लिए अपनी .xml एनीमेशन फ़ाइलें बना सकते हैं :ActivityActivity

fade_in.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" />

fade_out.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:fillAfter="true"
           android:duration="500" />

इसे इस तरह कोड में उपयोग करें: (आपके अंदर Activity)

Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

उपरोक्त कोड वर्तमान में सक्रिय हो जाएगा Activityऔर नए सिरे से फीका हो जाएगा Activityजिसके परिणामस्वरूप एक चिकनी संक्रमण होगा।

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

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

संसाधन आईडी का उपयोग करने के android.Rबजाय मुझे संदर्भित करने की सूचना दें R

अद्यतन : अब एपीआई स्तर 19 में पेश किए गए संक्रमण वर्ग का उपयोग करके संक्रमण करना आम बात है ।


65
एंड्रॉइड एनिमेशन में निर्मित का उपयोग करने से एक चिकनी संक्रमण होता है: overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);उन फ़ाइलों को देखने से आपको अपने कस्टम एनिमेशन में सुधार करने के तरीके पर संकेत मिल सकते हैं (जैसे कि फीका करने की तुलना में पिछले लंबे समय में फीका बनाकर)।
दान जे १

41
इसका एक अंदाज़ है: overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);:)
अल्वारोसंतिस्टेबन

क्या मुझे ओवरराइडिंगट्रांसशन ऑनक्रिएट या हर आशय में उपयोग करना है? या जो मैं चाहता हूं उस पर निर्भर करता है? धन्यवाद।
रिकार्डो

19
"ओवरराइडिंग" के बिना एक विकल्प है:Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
oleynikd

1
यदि डेवलपर विकल्पों में सक्षम है, तो उपरोक्त परिवर्तन तभी निष्पादित किया जाता है, जब stackoverflow.com/a/30422015/2914140 देखें ।
कूलमाइंड

22

केवल ओलीकिनड द्वारा उत्तर को फिर से पोस्ट करना क्योंकि यह सरल और साफ है

Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(),
    android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); 
startActivity(intent, bundle);

चूंकि ओवरराइडिंग ट्रेंडिंग कुछ मोबाइलों में काम नहीं करती है और एन्स का समाधान बहुत अच्छा नहीं है, इसलिए यह उत्तर सही होना चाहिए।
ह्यूगो पासोस

19

आप अपनी गतिविधि में एनीमेशन को भी जोड़ सकते हैं, नीचे की विधि पर जैसे कि becasue overridePendingTransition कुछ मोबाइल के साथ काम नहीं कर रहा है, या यह डिवाइस सेटिंग्स पर निर्भर करता है ...

View view = findViewById(android.R.id.content);
Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in);
mLoadAnimation.setDuration(2000);
view.startAnimation(mLoadAnimation);

1
पिछली या मूल गतिविधि के लिए एनीमेशन कैसे संभालें?
मेहम

9
पैरेंट गतिविधि में परिवर्तन के लिए एनीमेशन सेट करने के लिए इस कोड का उपयोग करें: @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); }
जॉन वेरको

15

आप अपनी शैली में इस कोड का उपयोग भी कर सकते हैं। तो आपको अपनी गतिविधि में कुछ और लिखने की आवश्यकता नहीं है। java

<!-- 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/colorAccent</item>
    <item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item>
</style>

<!-- Setting window animation -->
<style name="AppTheme.WindowTransition">
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
    <item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.