Android转换完成后如何完成活动

时间:2016-10-29 09:35:57

标签: java android android-transitions activity-finish

我希望在完成两项活动之间的转换后结束之前的活动

我尝试了ActivityCompat.finishAfterTransition(this);但实际上在转换完成之前完成了活动

我之前已经调查了this solution,但我无法理解它的答案,如果有人能够在转换完成后解释如何结束某项活动,那就会膨胀

更新:

我刚尝试开始像这样的下一个活动

Intent intent = new Intent(LoginActivity.this, TaskActivity.class);
                    startActivity(intent);

onStop代码将被激活,但是当我使用此

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this);
                Intent intent = new Intent(LoginActivity.this, TaskActivity.class);
                startActivity(intent,options.toBundle());

onStop不会被激活所以我应该手动激活它,如果是这样,建议

3 个答案:

答案 0 :(得分:2)

您提供的链接中的答案建议您在活动的顶部创建一个变量

Boolean mShouldFinish = false;

然后在开始转换到下一个活动之后(在startActivity(ctx,intent,bundle)之后)添加:

mShouldFinish = true;

使用以下命令添加覆盖onStop方法:

@Override
public void onStop() {
    super.onStop();
    if(mShouldFinish)
         finish();
}

答案 1 :(得分:2)

我刚刚分享了我的回答here。 使用supportFinishAfterTransition();

答案 2 :(得分:0)

Guys找到了解决方案, 而不是将此代码用于转换

if (Build.VERSION.SDK_INT >= 21) {
                    TransitionInflater inflater = TransitionInflater.from(LoginActivity.this);
                    Transition transition = inflater.inflateTransition(R.transition.fade_transition);
                    TransisitonTime = transition.getDuration()*2;
                    getWindow().setExitTransition(transition);
                }

                ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this);

我使用了这个

overridePendingTransition(R.animator.fade_in,
                        R.animator.fade_out);

使用这些xml文件

fade_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="2000"/>
</set>

fade_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="2000"/>
</set>

这样我可以在调用finish()时进行淡入和淡出过渡

@Droidman 致敬,指出我正确的方向