【发布时间】:2017-08-27 17:19:54
【问题描述】:
我们有 enterPictureInPictureMode() 将活动从其当前形式移动到画中画表示。
除了销毁 Activity 之外,我们通过什么方式恢复它,将 Activity 恢复到其正常状态? Activity 上没有 exitPictureInPictureMode()、leavePictureInPictureMode() 或 janeGetMeOffThisCrazyPictureInPictureModeThing() 方法,并且文档似乎没有涵盖替代方法。
我对适用于 Android O 的解决方案感兴趣,该解决方案适用于移动设备上的画中画模式,不过如果它也适用于 Android TV,那就太好了!
更新 2017-04-08:如果您想要在用户单击 X 按钮退出画中画模式时返回正常模式,您可以执行以下操作:
@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode);
if (!isInPictureInPictureMode) {
getApplication().startActivity(new Intent(this, getClass())
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}
}
关键位是调用startActivity() 以使用FLAG_ACTIVITY_REORDER_TO_FRONT 再次启动当前活动。对于singleTask 活动,您需要在一些非Activity 上下文中调用它,例如Application 单例。这似乎不会触发onStop() 或onStart(),但它会触发onNewIntent()(无论您传递给Intent 的任何startActivity())。
【问题讨论】:
-
您是否遵循Using a Single Playback Activity for PIP 的建议?
-
@ianhanniballake:是的。不过,这并不能解决我的担忧。我不想切换内容。我只想将内容扩展回其原始大小,而不会中断正在发生的事情。例如,用户决定进入画中画模式,发现视频太小,想再次展开。
-
是的,没有像你提到的那样的方法。我在画中画中工作不多,但您可以使用onPictureInPictureModeChanged 来追踪正常和画中画模式切换事件。
-
好问题,让我参观了 -- Multiwindow support 提到了电视上的画中画和手持设备的分屏,同义词.. 另外,我只是想知道,简不会发疯如果 tom、dick 和 harry 开发的应用程序相互压制对方强迫/滥用 janeEscapeLoopPiP,那么.. 可能将这部分留给用户输入/操作会更好。当用户在会议中时,这听起来像是向电话 api 提供“disconnectCall”方法
-
@CommonsWare 祝您问题得到解决。
标签: android android-8.0-oreo android-picture-in-picture