Android——画中画模式

devtools/2024/11/7 17:21:41/

应用中的画中画

  • 监听回到桌面与打开任务列表的广播
  • 收到广播之后,调用 enterPictureInPictureMode 方法进入画中画模式
  • 重写活动页面的 onPictureInPictureModeChanged 方法,补充进入画中画模式或退出画中画模式时的处理逻辑

回到桌面与切到任务列表

  • 按下主页键会回到桌面,按下任务键会打开任务列表,这两个操作并未提供相应的按键处理方法,而是通过广播发出时间信息。
  • 若想知晓是否回到桌面,以及是否打开任务列表,均需收听系统广播Intent.ACTION_CLOSE_SYSTEM_DIALOGS
  • 从收到的广播意图中获取原因reason字段,该字段值为 homekey 时表示回到桌面,值为 recentapps 时打开任务列表

清单文件中配置 supportsPictureInPicture

        <activityandroid:name=".ReturnDesktopActivity"android:supportsPictureInPicture="true"android:exported="true">
        receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (intent != null && intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {String reason = intent.getStringExtra("reason");if (!reason.isEmpty() && (reason.equals("homekey") || reason.equals("recentapps"))) {// Android8.0开始才提供画中画模式if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isInPictureInPictureMode()) {PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();// 设置宽高比例值,第一个参数表示分子,第二个参数表示分母// 下面的10/5=2,表示画中画窗口的宽度是高度的两倍Rational ratio = new Rational(10, 5);builder.setAspectRatio(ratio);// 进入画中画模式enterPictureInPictureMode(builder.build());}}}}};

案例代码


http://www.ppmy.cn/devtools/132067.html

相关文章

Unity3D PBR美术工作流详解

一、引言 Unity3D中的PBR&#xff08;Physically Based Rendering&#xff0c;基于物理的渲染&#xff09;技术是一种先进的渲染技术&#xff0c;它基于物理光学原理&#xff0c;能够更加真实地模拟物体表面的光照反射和折射效果。掌握PBR的渲染流程对于提升游戏场景的真实感至…

加固筑牢安全防线:多源威胁检测响应在企业网络安全运营中的核心作用

随着网络攻防技术的演进&#xff0c;传统威胁检测技术手段已难以适应快速变化的威胁。多维度协同的攻击手段使得单一的检测技术难以应对复杂的网络安全威胁&#xff0c;企业需要更先进的检测技术来提升安全防护能力。 一、传统威胁检测技术与单一检测的局限性 传统威胁检测技术…

C# 项目中配置并使用 `log4net` 来输出日志

C# 项目中配置并使用 log4net 来输出日志&#xff0c;你需要按照以下步骤进行配置&#xff1a; 步骤 1: 安装 log4net 包 首先&#xff0c;你需要通过 NuGet 包管理器安装 log4net 库。你可以在 Visual Studio 的 NuGet 管理器中搜索 log4net&#xff0c;或者使用以下命令在 …

安装acondana3, Conda command not found

Linux 服务器安装acondana3后 输入conda找不到 写入路径也没找到 vim ~/.bashrc 加入 PATH"root/anaconda3/bin:$PATH" 更新文件&#xff1a; source ~/.bashrc 还是找不到conda 命令 解决办法 source ~/anaconda3/etc/profile.d/conda.sh conda activate Your_e…

使用批处理脚本批量删除Maven无效依赖

背景 在开发过程中&#xff0c;我们经常会遇到以下情况&#xff1a; 在pom.xml文件中错误地指定了依赖的名称。因为网络问题&#xff0c;某些依赖下载不完全。依赖版本号错误&#xff0c;导致下载的文件无法使用。 这些情况会导致Maven在本地仓库中留下一些无效的文件&#…

斑马打印机如何与工业系统(如MES、ERP、数据库等)自动化通讯?

摘要&#xff1a;本文将介绍OPC Router与斑马&#xff08;Zebra&#xff09;打印机相结合的优势&#xff0c;探讨其在工业4.0和物联网领域的应用&#xff0c;以及如何通过简单配置实现数据传输和智能监控。 在工业生产过程中&#xff0c;标签打印环节至关重要。斑马&#xff08…

Nginx 文件名逻辑漏洞(CVE-2013-4547)

影响版本&#xff1a;Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7 漏洞原理 这个漏洞其实和代码执行没有太大关系&#xff0c;其主要原因是错误地解析了请求的URI&#xff0c;错误地获取到用户请求的文件名&#xff0c;导致出现权限绕过、代码执行的连带影响。 举个例子&#xff…

【Python进阶】Python中的网络爬虫策略:高效数据抓取与解析

1、网络爬虫概论与Python环境配置 1.1 网络爬虫基本概念与工作原理 网络爬虫&#xff0c;如同在网络世界中勤劳的蚂蚁&#xff0c;自动地在网络空间里穿梭游走&#xff0c;寻找并收集散布在网络各个角落的信息宝藏。它是一种自动化程序&#xff0c;遵循一定的规则&#xff0c…