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

and*_*per 13 android android-activity android-transitions android-5.0-lollipop

就像标题说的那样...

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

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

    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());
Run Code Online (Sandbox Code Playgroud)

Geo*_*unt 26

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

getWindow().getSharedElementTransition().addListener(listener);
Run Code Online (Sandbox Code Playgroud)

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

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

所以,不,如果你想让这两个活动都了解转换,你就必须将其破解.被调用的活动总是知道何时转换完成(使用监听器),并且调用活动总是在退出时知道.

  • 无论如何,解决方案似乎对我有用,虽然你的功能名称错了.它应该是getSharedElementEnterTransition()或任何其他. (2认同)
  • 有谁知道如何为“ ActivityOptionsCompat.makeCustomAnimation”添加侦听器?我不确定应该将其添加到哪个转换中,或者应该将其添加到何处。我想听听恢复活动中重新进入/退出转换的结束。 (2认同)