2012-04-20 9 views
35

मैं गतिविधि को बदलते समय स्लाइड प्रभाव को बाएं से दाएं चाहता हूं और इसके लिए मैं निम्नलिखित कोड का उपयोग कर रहा हूं लेकिन कोई परिणाम नहीं मिला। कृप्या मुझे सही करें। धन्यवादएंड्रॉइड में दो गतिविधियों के बीच स्लाइड एनीमेशन कैसे लागू करें?

जावा में

दोनों फ़ाइल रेस में

super.onCreate(savedInstanceState); 
overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
setContentView(R.layout.main); 

दो फ़ाइलों/anim निर्देशिका
fadein.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:duration="5000" 
android:fromAlpha="0.0" 
android:interpolator="@android:anim/slide_out_right" 
android:toAlpha="1.0" > 
</alpha> 

fadeout.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:duration="5000" 
android:fromAlpha="0.0" 
android:interpolator="@android:anim/slide_in_left" 
android:toAlpha="1.0" > 
</alpha> 
+0

मैंने इस कोड का उपयोग किया: 'overridePendingTransition (android.R.anim.fade_in, android.R.anim.fade_out);' आप इन उदाहरणों को [जीमेलएनीमेशन] में देख सकते हैं (https://github.com/CabezasGonzalezJavier/GmailAnimation) या [लोपेएनीमेशन] (https://github.com/CabezasGonzalezJavier/LopeAnimations)। इसके अलावा आप इस [ब्लॉग] में और अधिक देख सकते हैं (http://thedeveloperworldisyours.com/android/gmail-overriding-pending-transition/#sthash.CEhJwJLg.dpbs)। – Cabezas

उत्तर

26
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splashscreen); 

     new Handler().postDelayed(new Runnable() { 
      public void run() { 

        /* Create an intent that will start the main activity. */ 
        Intent mainIntent = new Intent(SplashScreen.this, 
          ConnectedActivity.class); 
        mainIntent.putExtra("id", "1"); 

        //SplashScreen.this.startActivity(mainIntent); 
        startActivity(mainIntent); 
        /* Finish splash activity so user cant go back to it. */ 
        SplashScreen.this.finish(); 

        /* Apply our splash exit (fade out) and main 
         entry (fade in) animation transitions. */ 
        overridePendingTransition(R.anim.mainfadein,R.anim.splashfadeout); 
      } 
    }, SPLASH_DISPLAY_TIME); 
    } 
120

इस दो फ़ाइल को res/anim फ़ोल्डर में जोड़ें।

slide_in.xml

  <?xml version="1.0" encoding="utf-8"?> 
      <translate 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:duration="@android:integer/config_longAnimTime" 
        android:fromXDelta="100%p" 
        android:toXDelta="0%p"> 
      </translate> 

slide_out.xml

  <?xml version="1.0" encoding="utf-8"?> 
      <translate 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:duration="@android:integer/config_longAnimTime" 
       android:fromXDelta="0%p" 
       android:toXDelta="-100%p"> 
      </translate> 

और onCreate में निम्न कोड() अगले गतिविधि की विधि है कि आप आशय के माध्यम से पारित लिखें।

  overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 
+0

जिग्नेश: यदि यह उत्तर आपकी सहायता करता है तो कृपया सही के रूप में चिह्नित करें। –

+7

धन्यवाद - बैक बटन –

+0

दबाकर पुरानी गतिविधि पर वापस जाने पर मुझे रिवर्स एनीमेशन कहां रखा जाना चाहिए, धन्यवाद, यह वास्तव में –

28

आप अपनी डिफ़ॉल्ट गतिविधि एनीमेशन को ओवरराइट कर सकते हैं और यह ओवरराइड पार्टिंग ट्रांसमिशन से बेहतर प्रदर्शन कर सकता है। मैं इस समाधान का उपयोग करता हूं जो हर एंड्रॉइड संस्करण के लिए काम करता है। बस पेस्ट 4 फाइलों की प्रतिलिपि बनाएँ और नीचे दी गई 4 लाइनों की शैली जोड़ें:

"कस्टम एक्टिविटीएनीमेशन" बनाएं और इसे "विंडो एनीमेशन स्टाइल" द्वारा अपनी मूल थीम में जोड़ें।

<!-- 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> 

फिर रेस फ़ोल्डर के अंतर्गत anim फ़ोल्डर बनाएँ और फिर anim फ़ोल्डर में इस चार एनीमेशन फ़ाइलों को बनाने:

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> 

आप किसी भी समस्या का सामना तो आप मेरी sample project from github डाउनलोड कर सकते हैं।

धन्यवाद

+0

बहुत बहुत धन्यवाद! –

+2

adnroid 6 (huawei p8) – qkx

+1

पर काम नहीं करता है, मैं एंड्रॉइड 6 हुआवेई का उपयोग कर रहा हूं और इसका प्रदर्शन बहुत अच्छा है। :) –

0

आप startActivity बजाय onCreate में overridePendingTransition इस्तेमाल कर सकते हैं। कम से कम, यह मेरे लिए काम करता है!

एक पूर्ण उदाहरण here देखें। इसमें बैकप्रेस पर एक (रिवर्स) एनीमेशन शामिल है, इसलिए पिछली गतिविधि पर लौटने पर!आपके विशिष्ट उदाहरण (फीड-इन और -उट) में जो अनावश्यक हो सकता है।

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