从活动A导航到活动B时,我正在使用共享元素转换。
我的问题 - 在活动B中调用SupportFinishAfterTransition
会在OnActivityResult
之后调用OnTransitionEnd
,活动A中的间隔很小。因此,我在活动A中的用户界面(ImageView
)是“闪烁”是因为图像源更新为间隔。
首先需要调用OnActivityResult
来更新我的用户界面,然后进行退出转换。
我的代码: 活动A:
protected override void OnCreate(Bundle savedInstanceState)
{
// Some code
Window.SharedElementExitTransition.AddListener(this);
}
此代码首先调用:
public void OnTransitionEnd(global::Android.Transitions.Transition transition)
{
}
此代码第二次调用,但我想首先:
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
}
活动B:
SetResult(Result.Ok, intent);
SupportFinishAfterTransition();
答案 0 :(得分:1)
使用 onActivityReenter 代替OnActivityResult。在显示活动之前执行onActivityReenter,在显示活动之后执行OnActivityResult。
@Override
public void onActivityReenter(int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
//do your work here
//example of getting data:
int someData = data.getIntExtra("EXTRA_CODE", -1);
}
}
答案 1 :(得分:0)
从startActivityForResult
返回后,想要进行过渡时,您必须意识到这些事情:
i。)您需要指定一个windowSharedElementReenterTransition
,通常只指定windowSharedElementEnterTransition
和windowSharedElementEnterTransition
。
ii。)在重新输入的活动的onActivityReenter
中,您需要调用postponeEnterTransition()
,然后根据需要更新视图并再次调用startPostponedEnterTransition()
。
onActivityResult
仅在上一个活动完成时调用,而onActivityReenter
在前一个活动仍在运行时调用(您可以在其中获取意图以更新UI)。
这是一篇将光带入黑暗的文章: https://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html