Как добавить анимацию в конец действия ()

Я использую overridePendingTransition для того, когда моя активность создана и работает нормально. Я вижу, что затухание отлично работает, но когда я пытаюсь анимировать финиш в своей активности, он по-прежнему выполняет по умолчанию права на левый слайд.

Сначала я попытался определить анимацию, когда начинаю работу следующим образом:

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); } 

Затем я попытался сделать это, когда закончу работу

 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); } } }); 

Но ни один из этих подходов не будет препятствовать скольжению «справа налево» для анимации выхода. Любые идеи о том, что я делаю неправильно?

Solutions Collecting From Web of "Как добавить анимацию в конец действия ()"

Я переопределяю ожидающий переход сразу после вызова finish ();

В моем случае я сделал это, чтобы избежать переходов.

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

Заказ важен 🙂

Я исправил эту проблему, используя такой подход:

Открыть с анимацией:

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

Чтобы закрыть анимацию:

 @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); } 

Посмотрите на это через тему. Вы можете определить ввод анимации выхода для действий или всего приложения

 finish(); overridePendingTransition(0, 0); 

Я бы предложил использовать метод isFinishing () для настройки анимации в onPause вместо вызова finish ()

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

Этот вопрос уже ответил, но самый эффективный способ поместить анимацию при выходе из действия – переопределить метод «finish ()» связанной деятельности:

 @Override public void finish() { super.finish(); overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom); } 

Следуя ответу @schwiz, здесь приведена переопределение анимации для встроенной темы «Диалог», где я определил локальные анимации slide_up и slide_down. Моя активность определяет тему MyDialog, чтобы входить и выходить из этих переходов.

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

Используйте startActivityForResult для запуска вашей дочерней активности и в onActivityResult () родительской активности:

  @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); } 
 if (getEnterAnimation() > -1 && getExitAnimation() > -1) { overridePendingTransition(getEnterAnimation(), getExitAnimation()); } 

Где эти методы возвращают анимацию из R.anim.YOUR_ANIMATION_XML

Добавьте этот код в свой onCreate () до

 setContentView() 

И в вашем onPause () перед

 super.onPause() 

Я попытался добавить этот код до / внутри этих методов, но анимация выхода никогда не работала

 startActivity() finish() onBackPressed()