我怎样才能添加一个animation完成()

我正在使用overridePendingTransition为我的活动创build时,正常工作,我可以看到淡入淡出效果很好,但是当我尝试和活动完成animation完成后,它仍然在默认的权利左滑动。

我首先尝试定义出来的animation,当我开始的活动如下:

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

但是这两种方法都不能阻止退出animation的“从右到左”滑动。 任何想法,我做错了什么?

在调用finish()之后,我重写挂起的转换。

就我而言,我已经做到了避免过渡。

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

顺序是重要的:)

我使用这种方法解决了这个问题:

用animation打开:

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

closuresanimation:

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

看看通过一个主题做到这一点。 您可以为活动或整个应用程序定义input退出animation

我build议使用isFinishing()方法来configurationonPause的animation,而不是调用finish()

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

这个问题已经回答了,但是从活动退出时放置animation的最有效的方法是覆盖相关活动的“finish()”方法:

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

以下是@schwiz的回答,下面是内置对话框主题的animation重写,其中我定义了本地的slide_up和slide_downanimation。 我的活动指定了主题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返回animation

在你的onCreate()之前添加这段代码

 setContentView() 

并在你的onPause()之前

 super.onPause() 

我试图在这些方法之前/之内添加此代码,但退出animation从未工作

 startActivity() finish() onBackPressed()