如何在活动之间的转换完成后收到通知?

时间:2015-08-11 12:30:14

标签: android android-activity android-5.0-lollipop android-transitions

正如标题所说......

我正在使用活动之间的转换,并且我希望为这两个活动提供某种类型的监听器(或事件),以便在转换完成时以及在它开始之前。

以下是创建转换的示例代码:

    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());

1 个答案:

答案 0 :(得分:22)

您可以为您使用的任何转场添加侦听器。例如:

getWindow().getSharedElementTransition().addListener(listener);

这将监听转换本身何时开始和结束。但是,它不会为您提供整个活动转换信息。例如,调用活动不知道被调用活动何时完成其转换。

假设顶部的过渡未标记为半透明,则当顶级活动变得不透明时,将告知基础过渡停止 - onStop()。这并不意味着过渡已经结束,只是意味着顶级活动的淡入已经结束。但是,一旦活动停止,我想不出你想做的事情。但是,当活动是半透明时,这无济于事。

所以,不,如果你想让这两个活动都了解过渡,你就必须入侵它。被叫活动总是知道转换完成时(使用监听器),并且调用活动总是知道退出。