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

标签 android android-8.0-oreo android-picture-in-picture

我们有 enterPictureInPictureMode() 将 Activity 从其当前形式移动到画中画表示。

除了销毁 Activity 之外,我们还通过什么方式恢复它,将 Activity 恢复到正常状态? Activity 上没有 exitPictureInPictureMode()leavePictureInPictureMode()janeGetMeOffThisCrazyPictureInPictureModeThing() 方法,以及文档似乎没有涵盖替代方案。

我对适用于 Android O 的解决方案感兴趣,它适用于移动设备上的画中画模式,不过如果它也适用于 Android TV,那就太好了!

UPDATE 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 再次启动当前 Activity 。对于 singleTask Activity ,您需要在一些非 Activity 上下文中调用它,例如 Application 单例。这似乎不会触发 onStop()onStart(),但它确实会触发 onNewIntent()(使用任何 Intent 你传递给 startActivity())。

最佳答案

  1. 将 Activity 移到后面

    activity.moveTaskToBack(false /* nonRoot */);
    
  2. 将 Activity 恢复到最前面

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

关于android - 我们如何离开画中画模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174507/

相关文章:

android - Android平台中的Service vs IntentService

android - 在 Android 上显示点击覆盖,例如基线网格

android - 迁移到 Android 11 后无法绑定(bind)到服务

java - MediaRecorder 启动失败错误

android - READ_PHONE_NUMBERS 在 android O 下不工作

java - 画中画 - 纵横比太极端

android - 如何使用为 Android 12 发布的新 Material You 颜色

android - 使用 ASP.Net 在服务器端获取 Android 版本

android - 如何以编程方式关闭画中画

java - 如何检测用户是否拖动 PIP 窗口(向下拖动以关闭)?