我创建了activity
(活动编号1),其中包含2个Views
,一个button
和一个textView
这两个视图shared
到另一个activity
{1}}(活动编号2)
我使用以下代码从共享元素的activity1
到activity2
开始:
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
方法维护动画?
答案 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