You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用进入画中画(PiP)后如何显示VideoListFragment?

实现画中画模式下显示视频列表的方案

核心逻辑

进入画中画(PiP)模式前,先将当前的VideoShowingFragment从Fragment回退栈中移除,让VideoListFragment重新显示在MainActivity的容器里,之后再启动PiP。这样PiP窗口悬浮时,底层就是视频列表页面,用户可以同时浏览列表。

具体步骤

1. 调整PiP触发逻辑(VideoShowingFragment内)

在点击进入PiP的图标事件中,先执行Fragment回退,再启动PiP:

pipIcon.setOnClickListener {
    // 回退到VideoListFragment
    parentFragmentManager.popBackStack()
    
    // 启动PiP(保留你原有的PiP配置代码)
    val pipParams = PictureInPictureParams.Builder()
        .setAspectRatio(Rational(16, 9)) // 根据你的视频比例配置
        .build()
    requireActivity().enterPictureInPictureMode(pipParams)
}

2. 确保跳转事务加入回退栈(VideoListFragment内)

检查跳转到VideoShowingFragment的代码,必须添加回退栈,否则popBackStack()无法生效:

// 列表项点击跳转逻辑
videoListItem.setOnClickListener {
    val videoUrl = it.tag as String
    val showingFragment = VideoShowingFragment.newInstance(videoUrl)
    parentFragmentManager.beginTransaction()
        .replace(R.id.fragment_container, showingFragment)
        .addToBackStack(null) // 关键:将事务加入回退栈
        .commit()
}

3. 可选:退出PiP时恢复视频播放页面

如果需要在退出PiP时自动回到视频播放页,可以在MainActivity中监听PiP状态变化,结合ViewModel保存当前播放的视频URL:

override fun onPictureInPictureModeChanged(
    isInPictureInPictureMode: Boolean,
    newConfig: Configuration?
) {
    super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
    if (!isInPictureInPictureMode) {
        // 从ViewModel获取之前保存的播放URL
        val currentVideoUrl = sharedViewModel.currentPlayingUrl.value
        currentVideoUrl?.let {
            val showingFragment = VideoShowingFragment.newInstance(it)
            supportFragmentManager.beginTransaction()
                .replace(R.id.fragment_container, showingFragment)
                .addToBackStack(null)
                .commit()
        }
    }
}

注意事项

  • 必须保证VideoShowingFragment的跳转事务加入回退栈,否则回退操作无效。
  • 回退操作要先于PiP启动执行,确保底层页面切换完成后再显示悬浮窗口。
  • 用ViewModel存储当前播放的视频URL和进度,能保证回退、恢复时播放状态连贯。

内容的提问来源于stack exchange,提问作者Mohammad Javad Habibpour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:25:23