Jak dodać animację do zakończenia aktywności()

Używam overridePendingTransition, gdy Moja aktywność jest tworzona i działa dobrze widzę, że zanikanie działa świetnie, ale kiedy próbuję animować zakończenie aktywności, nadal wykonuje domyślny slajd od prawej do lewej.

Po raz pierwszy próbowałem zdefiniować animację, gdy rozpoczynam działanie w następujący sposób:

Intent myIntent = new Intent(a, SkdyAlert.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    a.startActivity(myIntent);
    if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
        AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
    }

Potem próbowałem to zrobić, gdy zakończę aktywność, jak również

okBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            finish();
            if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
                AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
            }
        }
    });

Ale żadne z tych podejść nie zapobiegnie przesuwaniu się" od prawej do lewej " dla Zakończ animację. Jakieś pomysły na to, co robię źle?

Author: b-ryce, 2010-12-02

9 answers

I override pending transition tuż po wywołaniu finish ();

W moim przypadku, zrobiłem to, aby uniknąć zmian.

finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);

Porządek jest ważny:)

 196
Author: Goofyahead,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-16 21:28:40

Sugerowałbym użycie metody isFinishing() do konfiguracji animacji w onPause zamiast wywoływania finish()

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()){
        overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
    }

}
 19
Author: Pablo A. Martínez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 10:56:17

To pytanie już odpowiedziało, ale najskuteczniejszym sposobem na umieszczenie animacji podczas wychodzenia z aktywności jest nadpisanie metody" finish () " powiązanej aktywności:

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
 16
Author: Bahadir Tasdemir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-11 13:53:10
finish();
overridePendingTransition(0, 0);
 15
Author: Felipe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 22:59:41

Naprawiłem ten problem używając tego rodzaju podejścia:

Aby otworzyć za pomocą animacji:

 Intent newUser = new Intent(getBaseContext(), NewUserActivity.class);
    startActivity(newUser);
    overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);

Na zakończenie animacją:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right);
}
 14
Author: Deivison Sporteman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-10 12:35:24

Spójrz na to poprzez temat. Możesz zdefiniować animacje wyjścia enter dla działań lub całej aplikacji

 12
Author: schwiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-02 00:55:16

Po odpowiedzi @ schwiz, oto nadpisanie animacji dla wbudowanego motywu dialogowego, w którym zdefiniowałem lokalne animacje slide_up i slide_down. Moja aktywność określa temat MyDialog, aby mieć te przejścia w I Na Zewnątrz.

<style name="Animation.MyDialog" parent="android:Animation.Dialog">
    <item name="android:windowEnterAnimation">@anim/slide_up</item>
    <item name="android:windowExitAnimation">@anim/slide_down</item>
</style>

<style name="Theme.MyDialog" parent="android:Theme.Dialog">
    <item name="android:windowAnimationStyle">@style/Animation.MyDialog</item>
</style>

 6
Author: larham1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 00:13:49

Użyj startActivityForResult, aby rozpocząć aktywność dziecka i w onActivityResult () aktywności rodzica:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==REQUEST_YOUR_ACTIVITY) {
        overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim);
    }
    super.onActivityResult(requestCode, resultCode, arg2);
}
 5
Author: Chris.Zou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 11:31:54
if (getEnterAnimation() > -1 && getExitAnimation() > -1) {
    overridePendingTransition(getEnterAnimation(), getExitAnimation());
} 

Gdzie metody te zwracają animacje z R. anim.YOUR_ANIMATION_XML

Dodaj ten kod w onCreate() przed

setContentView()

I w twoim onpause () przed

super.onPause()

Próbowałem dodać ten kod przed / wewnątrz tych metod, ale animacja wyjścia nigdy nie zadziałała

startActivity()
finish()
onBackPressed()
 0
Author: Ahmed Adel Ismail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-05 11:54:50