我们如何离开画中画模式?

我们有enterPictureInPictureMode()把一个活动从当前的表单移动到一个画中画表示。

我们恢复的方式是什么,使活动恢复到正常状态,除了破坏活动? exitPictureInPictureMode()上没有exitPictureInPictureMode()leavePictureInPictureMode()janeGetMeOffThisCrazyPictureInPictureModeThing()方法,而且文档似乎没有涵盖替代方法。

我对Android O的解决scheme感兴趣,在移动设备上进行画中画模式,但是如果它适用于Android TV,那也太棒了!

更新2017-04-08 :如果你想要返回到正常模式,当用户单击Xbutton退出画中画模式,你可以做这样的事情:

  @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上下文中调用该Activity ,例如Application单例。 这似乎不会触发onStop()onStart() ,但它会触发onNewIntent() (无论您传递给startActivity()任何Intent )。

Solutions Collecting From Web of "我们如何离开画中画模式?"

  1. 将活动移到后面

     activity.moveTaskToBack(false /* nonRoot */); 
  2. 恢复到前面的活动

     Intent startIntent = new Intent(PipActivity.this, PipActivity.class); startIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); activity.startActivity(startIntent); 

官方文档说PIP窗口出现了让你切换到全屏的菜单。

PIP窗口为240x135dp,显示在屏幕四个angular的最顶层,由系统select。 用户可以调出一个PIP菜单 ,通过按住遥控器上的Homebutton,让他们将PIP窗口切换到全屏,或者closuresPIP窗口。 如果另一个video在主屏幕上开始播放,则PIP窗口将自动closures。

而且,只要用户切换PIP模式,您就可以覆盖PIP更改的事件以处理UI元素。

链接到onPictureInPictureModeChanged

 @Override public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { if (isInPictureInPictureMode) { // Hide the controls in picture-in-picture mode. ... } else { // Restore the playback UI based on the playback status. ... } } 

我不认为活动可以决定离开画中画模式。

从Android O API预览文档 :

进入PIP模式的活动进入暂停状态,但仍保持启动状态。 如果用户点击PIP活动,则系统显示供用户交互的菜单; 触摸事件在PIP状态下不会触及活动。

活动将通过onPictureInPictureModeChanged()通知。