Как я могу добавить анимацию к завершению действия()
Я использую overridePendingTransition для того, когда моя деятельность создается, и это отлично работает, я вижу, что fade in отлично работает, но когда я пытаюсь анимировать финиш на активности, он все еще делает слайд по умолчанию справа налево.
Я сначала попытался определить анимацию out, когда я начинаю работу следующим образом:
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);
}
}
});
но ни один из этих подходов не помешает слайд" справа налево " для анимации выхода. Любые идеи о том, что я делаю неправильно?
9 ответов:
Я переопределяю ожидающий переход сразу после вызова finish ();
в моем случае, я сделал это, чтобы избежать переходов.
finish(); Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);порядок важен :)
Я бы предложил использовать метод 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); }
я исправил эту проблему, используя такой подход:
открыть с анимацией:
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); }
смотреть на это через тему. Вы можете определить ввод выход анимации для деятельности или всего приложения
следуя ответу @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()
Comments