Android 活动之间的转换完成后,如何获得通知?

Android 活动之间的转换完成后,如何获得通知?,android,android-activity,android-5.0-lollipop,android-transitions,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 Strin

正如标题所说

我正在使用活动之间的转换,我希望两个活动都有某种类型的侦听器(或事件),用于转换何时完成以及转换刚开始之前

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

    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);
这将监听转换本身何时开始和结束。但是,它并没有提供整个活动转换信息。例如,调用活动不知道被调用活动何时完成转换

假设顶部的转换未标记为半透明,则当顶部活动变得不透明时,底层转换将被告知停止--
onStop()
。这并不意味着过渡已经完成,只是意味着顶级活动的淡入已经完成。不过,一旦活动停止,我想不出你想做什么。不过,当活动是半透明的时,这不会有帮助


所以,不,如果你想让这两个活动都知道这个转变,你就必须把它弄进去。被调用的活动总是知道转换在enter时何时完成(使用侦听器),而调用的活动总是在exit时知道。

您可以查看@k0sh,我在那里没有看到任何事件。只有当我想推迟转换时才应该调用的函数……因为没有这种方法。@k0sh没有吗?如果我想在过渡结束后立即显示视图或设置视图动画,那么该怎么办?我是否至少可以自定义转换,以区别对待新活动的某些视图(转换结束时淡入)?据我所知,框架中没有这种方法。你可以看一看。看这个简单的,你可以探索更多关于转换的内容,但同样,没有这样的方法:(这足够满足我的需要了。我会在我可以的时候检查它。谢谢。现在有一个+1。你能不能也回答这个问题:有可能进行转换(更具体地说,爆炸转换)忽略特定视图,或者让我选择如何处理它们(可能是它们的不同过渡)?是的,您可以按名称、实例、ID或类来定位或排除视图。使用一个动画设置,该设置包括排除不需要的视图的分解和另一个过渡(例如,淡入淡出)这只针对那些视图。很好。你知道关于这种自定义的教程吗?不管怎样,这个解决方案似乎适合我,尽管你把函数的名称搞错了。它应该是getSharedElementEnterTransition()或者其他任何人。是否有人知道如何为
活动选项Compat.makeCustomAnimation
添加侦听器?我不确定应该将其添加到哪个转换,或者它应该添加到哪里。我想在恢复活动中侦听重入/退出转换的结束。