我正在使用overridePendingTransition来创建我的活动并且工作正常我可以看到淡入效果非常好,但是当我尝试为活动设置动画时,它仍然是默认的向左滑动。 / p>
我在开始活动时首先尝试定义动画,如下所示:
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);
}
}
});
但这些方法都不会阻止退出动画的“从右到左”幻灯片。关于我做错了什么想法?
答案 0 :(得分:209)
我在调用finish();
后立即覆盖挂起转换就我而言,我这样做是为了避免过渡。
finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);
订单很重要:)
答案 1 :(得分:21)
我建议使用isFinishing()方法在onPause上配置动画,而不是调用finish()
@Override
protected void onPause() {
super.onPause();
if (isFinishing()){
overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
}
}
答案 2 :(得分:18)
finish();
overridePendingTransition(0, 0);
答案 3 :(得分:18)
这个问题已经回答,但是在退出活动时放置动画的最有效方法是覆盖相关活动的“finish()”方法:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
答案 4 :(得分:15)
我使用这种方法解决了这个问题:
用动画打开:
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);
}
答案 5 :(得分:12)
通过主题来做这件事。您可以为活动或整个应用程序定义输入退出动画
答案 6 :(得分:6)
在@schwiz的回答之后,这里是内置Dialog主题的动画覆盖,我在其中定义了本地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>
答案 7 :(得分:5)
使用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);
}
答案 8 :(得分:0)
if (getEnterAnimation() > -1 && getExitAnimation() > -1) {
overridePendingTransition(getEnterAnimation(), getExitAnimation());
}
这些方法从R.anim.YOUR_ANIMATION_XML
返回动画在
之前在onCreate()中添加此代码setContentView()
并在
之前的onPause()中super.onPause()
我尝试在这些方法之前/之内添加此代码,但退出动画从未起作用
startActivity()
finish()
onBackPressed()