如何向活动完成()添加动画

当我的活动被创建并且工作良好时,我使用 overridePendingTransfer,我可以看到渐变效果很好,但是当我尝试在活动上动画完成时,它仍然在做默认的从右到左的幻灯片。

当我开始这个活动时,我首先尝试定义 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);
}
}
});

但是这两种方法都不能阻止退出动画的“从右向左”滑动。知道我哪里做错了吗?

105589 次浏览

Look into doing it through a theme. You can define enter exit animations for activities or the entire application

I override pending transition just after calling finish();

In my case, I have done it to avoid transitions.

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

Order is important :)

Following on the answer by @schwiz, here is an animation override for the built-in Dialog theme, where I have defined local slide_up and slide_down animations. My activity specifies the theme MyDialog in order to have these transitions in and out.

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

finish();
overridePendingTransition(0, 0);

Use startActivityForResult to start your child activity and in onActivityResult() of your parent activity:

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

I fixed this issue using this kind of approach:

to open with animation:

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

To close with animation:

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

I would suggest to use isFinishing() method to configure the animations at onPause instead of calling finish()

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


}

This question has already answered but the most efficient way to put an animation while exiting from an activity is by overriding the "finish()" method of the related activity:

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