当前位置: 首页 > article >正文

Android——画中画模式

应用中的画中画

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

回到桌面与切到任务列表

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

清单文件中配置 supportsPictureInPicture

        <activity
            android:name=".ReturnDesktopActivity"
            android:supportsPictureInPicture="true"
            android:exported="true">
        receiver = new BroadcastReceiver() {
            @Override
            public 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.kler.cn/a/380186.html

相关文章:

  • 递归构建树菜单节点
  • 【C++习题】20. 两个数组的交集
  • 68.基于SpringBoot + Vue实现的前后端分离-心灵治愈交流平台系统(项目 + 论文PPT)
  • 掌握正则表达式:从入门到精通的实战指南
  • Maven 详细配置:Maven 项目 POM 文件解读
  • 游戏引擎学习第77天
  • js、vue、angular中的函数声明方式及特点
  • docker下迁移elasticsearch的问题与解决方案
  • 关于 C# (C Sharp)测试
  • Spring Boot技术在校园社团管理中的高效应用
  • Javascript的进阶部分(DOM)操作 !!
  • ssm023实验室耗材管理系统设计与实现+jsp(论文+源码)_kaic
  • 开源与商业的碰撞TPFLOW与Gadmin低代码的商业合作
  • 机器视觉:ROI在机器视觉中的作用
  • Spring学习笔记_24——切入点表达式
  • Pwn学习笔记(10)--UAF
  • ElementUI中el-table双击单元格显示输入框
  • 基于SSM+小程序的高校寻物平台管理系统(失物1)
  • k8s简单的指令以及图解
  • 论文阅读:Computational Long Exposure Mobile Photography (二)
  • Spring3(代理模式 Spring1案例补充 Aop 面试题)
  • 使用commitizen用于项目git提交规范管理
  • HarmonyOS第一课 07 从网络获取数据-习题
  • 【python GUI编码入门-14】创建动态更新的Tkinter GUI应用
  • 【算法】【优选算法】双指针(下)
  • 了解bootstrap改造asp.net core MVC的样式模板