Com*_*are 35 android android-8.0-oreo android-picture-in-picture
我们必须enterPictureInPictureMode()将活动从其当前形式转移到画中画表示.
除了破坏活动之外,我们还原的方法是什么,将活动恢复到正常状态?没有exitPictureInPictureMode(),leavePictureInPictureMode()或janeGetMeOffThisCrazyPictureInPictureModeThing()方法Activity,文档似乎没有涵盖替代方案.
我对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));
}
}
Run Code Online (Sandbox Code Playgroud)
关键位是调用startActivity()再次启动当前活动FLAG_ACTIVITY_REORDER_TO_FRONT.对于singleTask活动,您需要在某些非Activity上下文中调用它,例如Application单例.这似乎没有触发onStop()或onStart(),但它确实触发onNewIntent()(无论Intent你传递给什么startActivity()).
Sae*_*umi 10
我有同样的问题:
MainActivity打开VideoPlayerActivity已启用 PIP 模式。MainActivity。X画中画窗口上的关闭 ( ) 按钮。VideoPlayerActivity.虽然上述解决方案都不适合我,但我发现收听X按钮的唯一方法是覆盖onStop.
当活动从 PIP 恢复onResume并被onPictureInPictureModeChanged调用时,当X按钮被点击时,onStop和onPictureInPictureModeChanged被调用。
所以我试图finish()在alreay 调用onPictureInPictureModeChanged时调用内部onStop。
override fun onStop() {
super.onStop()
onStopCalled = true
}
override fun onResume() {
super.onResume()
onStopCalled = false
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) {
if (isInPictureInPictureMode) {
// ...
} else {
if (onStopCalled) {
finish()
}
}
}
Run Code Online (Sandbox Code Playgroud)
将活动移到后面
activity.moveTaskToBack(false /* nonRoot */);
Run Code Online (Sandbox Code Playgroud)将活动恢复到前面
Intent startIntent = new Intent(PipActivity.this, PipActivity.class);
startIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(startIntent);
Run Code Online (Sandbox Code Playgroud)官方文档称 PIP 窗口带有菜单,可让您切换到全屏。
PIP 窗口的尺寸为 240x135 dp,显示在系统选择的屏幕四个角之一的最顶层。用户可以调出PIP 菜单,让他们将 PIP 窗口切换为全屏,或者通过按住遥控器上的 Home 按钮关闭 PIP 窗口。如果主屏幕上开始播放另一个视频,PIP 窗口将自动关闭。
每当用户切换 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.
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5010 次 |
| 最近记录: |