क्या मैं Android startActivity () ट्रांस्फ़ॉर्मेशन एनीमेशन बदल सकता हूं?


110

मैं एक गतिविधि शुरू कर रहा हूं और इसके लिए एक अल्फ़ा फ़ेड-इन startActivity()और फ़ेड-आउट होगा finish()। मैं एंड्रॉइड एसडीके में इसके बारे में कैसे जा सकता हूं?


जवाबों:


33

उसी स्टेटमेंट में जिसमें आप फिनिश निष्पादित करते हैं (), वहां भी अपने एनीमेशन को निष्पादित करें। फिर, नई गतिविधि में, एक और एनीमेशन चलाएं। इस कोड को देखें:

fadein.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fillAfter="true">
     <alpha android:fromAlpha="1.0" 
            android:toAlpha="0.0"
            android:duration="500"/> //Time in milliseconds
</set>

अपने फिनिश-क्लास में

private void finishTask() {
    if("blabbla".equals("blablabla"){
        finish();
        runFadeInAnimation();
    }
}

private void runFadeInAnimation() {
    Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein);
    a.reset();
    LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere);
    ll.clearAnimation();
    ll.startAnimation(a);   
}

fadeout.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
           android:fillAfter="true">
  <alpha android:fromAlpha="0.0"
         android:toAlpha="1.0"
         android:duration="500"/>
</set>

अपने नए एक्टिविटी-क्लास में आप रनफ़ेडएनिमेशन जैसा एक परिचित तरीका बनाते हैं जो मैंने लिखा था और फिर आप इसे ऑनक्रिकेट में चलाते हैं और संसाधनों आईडी को फीका करने के लिए बदलना न भूलें।


1
इसके अलावा, डिफ़ॉल्ट लघु एनीमेशन समय का उपयोग करना बेहतर हो सकता है:android:duration="@android:integer/config_shortAnimTime"
elirsks

कहाँ हैrunFadeAnimation()
चोल्त्स्की

2
दोस्तों, कृपया इस पोस्ट के नीचे वास्तविक उत्तर देखना सुनिश्चित करें।
एंड्रॉइड डेवलपर

क्या है ब्लाबला ?? !!
अली खाकी

288

एपीआई स्तर 5 से शुरू होकर आप एक स्पष्ट संक्रमण एनीमेशन को निर्दिष्ट करने के लिए तुरंत ओवरराइडिंगट्रांसशन कॉल कर सकते हैं:

startActivity();
overridePendingTransition(R.anim.hold, R.anim.fade_in);

या

finish();
overridePendingTransition(R.anim.hold, R.anim.fade_out);

17
कुछ ऐसा जोड़ें: @Override public void onBackPressed () {super.onBackPressed (); overridePendingTransition (R.anim.hold, R.anim.fade_out); } वापस एनिमेशन जोड़ने के लिए।
राइटहैंडमेडकी

1
यह सबसे अच्छा स्वच्छ उत्तर होना चाहिए।
साइबर

1
@RightHandedMonkey एनिमेशन को वापस जोड़ने के लिए बेहतर ओवरराइड को खत्म करना (); गतिविधि की विधि उस मामले के लिए जिसमें गतिविधि बैक बटन की तुलना में कुछ और समाप्त होती है (उदाहरण के लिए एक कस्टम निकास बटन ...)।
इटियल मैमन

43

: Android थीम देखें http://developer.android.com/guide/topics/ui/themes.html

Themes.xml के तहत वहाँ होना चाहिए android:windowAnimationStyleजहाँ आप style.xml में शैली की घोषणा देख सकते हैं ।

उदाहरण कार्यान्वयन:

<style name="AppTheme" parent="...">

    ...

    <item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item>

</style>

<style name="WindowAnimationStyle">
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
    <item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>


Themes.xml और स्टाइल के लिए लिंक अपडेट करें। xml android.googlesource.com/platform/frameworks/base/+/refs/heads/… android.googlesource.com/platform/frameworks/base-+/refs/heads/…
vovahost

3
सबसे अच्छा उपाय ।
अभिषेक कुमार

आप @android:anim/fade_inजावा कोड से कैसे पहुंचेंगे?
तामॉक्सिन

17

उपयोग overridePendingTransition

startActivity();
overridePendingTransition(R.anim.fadein, R.anim.fadeout);

fadein.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <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" />
</set>

fadeout.xml

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

9

FadeIn और fadeOut के लिए , केवल अपने सुपर गतिविधि वर्ग में super.onCreate (saveInstanceState) के बाद इसे जोड़ें । आपको कुछ और बनाने की आवश्यकता नहीं है (कोई एक्सएमएल, कोई एनीमेशन फ़ोल्डर, कोई अतिरिक्त फ़ंक्शन नहीं)।

overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);

1
overridePendingTransition (android.R.anim.fade_in, android.R.anim.fade_out);
फरीद जेड

9

यदि आप हमेशा गतिविधि के लिए एक ही संक्रमण एनीमेशन चाहते हैं

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()) {
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }
}

4

आप बस एक संदर्भ बना सकते हैं और नीचे कुछ ऐसा कर सकते हैं: -

private Context context = this;

और आपका एनीमेशन: -

((Activity) context).overridePendingTransition(R.anim.abc_slide_in_bottom,R.anim.abc_slide_out_bottom);

आप अपने इच्छित किसी भी एनीमेशन का उपयोग कर सकते हैं।


1

मैं style.xml समाधान का उपयोग करना चाहता था, लेकिन यह मेरे लिए गतिविधियों के साथ काम नहीं करता था। पता चलता है कि उपयोग करने के बजाय android:windowEnterAnimationऔर android:windowExitAnimation, मुझे इस तरह की गतिविधि एनिमेशन का उपयोग करने की आवश्यकता है:

<style name="ActivityAnimation.Vertical" parent="">
    <item name="android:activityOpenEnterAnimation">@anim/enter_from_bottom</item>
    <item name="android:activityOpenExitAnimation">@anim/exit_to_bottom</item>
    <item name="android:activityCloseEnterAnimation">@anim/enter_from_bottom</item>
    <item name="android:activityCloseExitAnimation">@anim/exit_to_bottom</item>
    <item name="android:windowEnterAnimation">@anim/enter_from_bottom</item>
    <item name="android:windowExitAnimation">@anim/exit_to_bottom</item>
</style>

0
 // CREATE anim 

 // CREATE animation,animation2  xml // animation like fade out 

  Intent myIntent1 = new Intent(getApplicationContext(), Attend.class);
  Bundle bndlanimation1 =  ActivityOptions.makeCustomAnimation(getApplicationContext(), 
  R.anim.animation, R.anim.animation2).toBundle();
  tartActivity(myIntent1, bndlanimation1);

0

अधिकांश उत्तर बहुत सही हैं, लेकिन उनमें से कुछ को हटा दिया गया है जैसे कि R.anim.hold का उपयोग करना और उनमें से कुछ प्रक्रिया को विस्तृत करना है।

तो, आप उपयोग कर सकते हैं:

startActivity(intent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.