带动画的Android startActivity

时间:2017-01-10 11:37:11

标签: android animation

我创建了activity(活动编号1),其中包含2个Views,一个button和一个textView这两个视图shared到另一个activity {1}}(活动编号2)

我使用以下代码从共享元素的activity1activity2开始:

Pair textView = new Pair<>(view1, ViewCompat.getTransitionName(view1));
Pair button = new Pair<>(view2, ViewCompat.getTransitionName(view2));

ActivityOptionsCompat transitionActivityOptions =
        ActivityOptionsCompat.makeSceneTransitionAnimation(
                Activity1.this, textView, button);

Intent intent = new Intent(Activity1.this, Activity2.class);
ActivityCompat.startActivity(Activity1.this, intent, transitionActivityOptions.toBundle());

当我按back button时,views动画回Activity1。动画停止后我Override后面的按钮与以下代码:

@Override
public void onBackPressed(){
    Intent intent = new Intent(Detailed.this, Main.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    intent.putExtra("morph", morphButton.getMorph());
    startActivity(intent);

    finish();
}

startActivity方法取消动画。

我正在努力实现这一目标,因为我想将一些变量传回Activity1。有没有办法用startActivity方法维护动画?

1 个答案:

答案 0 :(得分:2)

那是因为您在onBackPressed中开始新活动而不是仅仅呼叫finish();。您可以改为使用startActivityResult并在Activity1中设置结果 在Activity1中使用此代码:

ActivityCompat.startActivityForResult(Activity1.this, intent, yourReqCode, yourRetransitionActivityOptions.toBundle());

然后在你的onBackPressed中设置结果:

@Override
public void onBackPressed(){
     Intent intent = new Intent();
        intent.putExtra("morph", morphButton.getMorph());
        setResult(RESULT_OK, intent);
        finish();
}

然后在onActivityResult的{​​{1}}中抓取您的结果:

Activity1