如何在活动之间的转换完成时得到通知?
How to get notified when a transition between activities have finished?
正如标题所说...
我正在使用活动之间的转换,并且我希望为这两个活动设置某种侦听器(或事件),用于转换完成时和开始前。
下面是创建转换的示例代码:
final Intent intent = new Intent(activity, TargetActivity.class);
if (initialQuery != null)
intent.putExtra(EXTRA_INITIAL_QUERY, initialQuery);
final String transitionName = activity.getString(R.string.transition_name);
ViewCompat.setTransitionName(viewToTransitionFromAndTo, transitionName);
final ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
viewToTransitionFromAndTo, transitionName);
ActivityCompat.startActivityForResult(activity, intent, requestCode, options.toBundle());
您可以将侦听器添加到您使用的任何转换。例如:
getWindow().getSharedElementTransition().addListener(listener);
这将监听转换本身何时开始和结束。但是,它不会为您提供完整的 activity 转换信息。例如,调用 activity 不知道被调用 activity 何时完成转换。
假设顶部的过渡未标记为半透明,当顶部 activity 变得不透明时,底层过渡将被告知停止 -- onStop()
--。这并不意味着过渡已经完成,它只是意味着顶部 activity 的淡入已经完成。不过,我想不出 activity 停止后您想做什么。但是,当 activity 是半透明的时,这将无济于事。
所以,不,如果你想让两个 Activity 都知道转换,你将不得不入侵它。被调用的 activity 总是知道转换何时完成(使用侦听器)进入调用 activity 总是在退出时知道。
正如标题所说...
我正在使用活动之间的转换,并且我希望为这两个活动设置某种侦听器(或事件),用于转换完成时和开始前。
下面是创建转换的示例代码:
final Intent intent = new Intent(activity, TargetActivity.class);
if (initialQuery != null)
intent.putExtra(EXTRA_INITIAL_QUERY, initialQuery);
final String transitionName = activity.getString(R.string.transition_name);
ViewCompat.setTransitionName(viewToTransitionFromAndTo, transitionName);
final ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
viewToTransitionFromAndTo, transitionName);
ActivityCompat.startActivityForResult(activity, intent, requestCode, options.toBundle());
您可以将侦听器添加到您使用的任何转换。例如:
getWindow().getSharedElementTransition().addListener(listener);
这将监听转换本身何时开始和结束。但是,它不会为您提供完整的 activity 转换信息。例如,调用 activity 不知道被调用 activity 何时完成转换。
假设顶部的过渡未标记为半透明,当顶部 activity 变得不透明时,底层过渡将被告知停止 -- onStop()
--。这并不意味着过渡已经完成,它只是意味着顶部 activity 的淡入已经完成。不过,我想不出 activity 停止后您想做什么。但是,当 activity 是半透明的时,这将无济于事。
所以,不,如果你想让两个 Activity 都知道转换,你将不得不入侵它。被调用的 activity 总是知道转换何时完成(使用侦听器)进入调用 activity 总是在退出时知道。