Android画中画窗口开启方法

 更新时间:2023年01月04日 16:34:23   作者:知奕奕  
Android8.0 Oreo(API Level26)允许活动启动画中画Picture-in-picture(PIP)模式。PIP是一种特殊类型的多窗口模式,主要用于视频播放。PIP模式已经可用于Android TV,而Android8.0则让该功能可进一步用于其他Android设备

基础画中画

manifest 设置

为了适配开启画中画状态时窗口的大小尺寸变化合理,我们需要修改 activity 中的对应属性

请为您的主 activity 添加如下属性

  • configChanges 当 activity 尺寸变化是走出适配
  • launchMode 若使用画中画,则必须单任务执行
  • resizeableActivity 确保可以重新调节 activity 尺寸
  • supportsPictureInPicture 开启画中画支持
<activity
    android:name=".MainActivity"
    android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
    android:exported="true"
    android:launchMode="singleTask"
    android:resizeableActivity="true"
    android:supportsPictureInPicture="true">
    <meta-data
        android:name="android.app.lib_name"
        android:value="" />
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

布局

即一线性布局,配上 videoview,使他充满整个屏幕宽高

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <VideoView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

开启画中画

定义一个开启画中画的方法 minimize

private fun minimize() {
    // 画中画builder
    var builder = PictureInPictureParams.Builder()
    // rational设定尺寸大小
    val info = Rational(video.width, video.height)
    builder.setAspectRatio(info).build()
    // 开启画中画
    enterPictureInPictureMode(builder.build())
}

为了简化使用,我们定义:在按下导航栏的 home 键时,整个 activity 缩小成画中画形式,并仅展示 videoview

这一步骤可以通过重写 onUserLeaveHint 方法实现

override fun onUserLeaveHint() {
    minimize()
}

上传一个你喜欢的视频,插入组件,运行程序即可

目前还未做 UI 优化,所以整体结构还是很丑

到此这篇关于Android画中画窗口开启方法的文章就介绍到这了,更多相关Android画中画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android Studio升级到3.0后遇到的坑

    Android Studio升级到3.0后遇到的坑

    自从谷歌发布Android Studio 3.0版本后,一直心向往之,终于抽时间做了下升级处理,现在把升级过程中遇到的一些问题以及解决方案分享给大家,希望对大家能给有事帮助
    2017-11-11
  • android studio集成unity导出工程的实现

    android studio集成unity导出工程的实现

    本文主要介绍了android studio集成unity导出工程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Android SDK在线更新镜像服务器大全

    Android SDK在线更新镜像服务器大全

    由于一些原因,Google相关很多服务都无法访问,所以在很多时候我们SDK也无法升级,当然通过技术手段肯定可以解决,但是比较麻烦,而且下载速度也不怎么样
    2015-10-10
  • JSON解析和XML解析区别对比

    JSON解析和XML解析区别对比

    JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大。这篇文章主要介绍了JSON解析和XML解析区别对比,需要的朋友可以参考下
    2016-10-10
  • android通过usb读取U盘的方法

    android通过usb读取U盘的方法

    这篇文章主要为大家详细介绍了android通过usb读取U盘的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android如何使用Flow封装一个FlowBus工具类

    Android如何使用Flow封装一个FlowBus工具类

    本文介绍了如何在Android中使用Flow封装一个FlowBus工具类,以替代EvenutBus、Rxbus、LiveDataBus、LiveData等第三方依赖包,作者提供了在Activity、Fragment、Service和Websock中使用FlowBus的具体代码,并解释了实现的效果,文章最后还提供了项目demo源码的下载链接
    2024-09-09
  • android中GridView实现点击查看更多功能示例

    android中GridView实现点击查看更多功能示例

    本篇文章主要介绍了android中GridView实现点击查看更多功能示例,非常具有实用价值,需要的朋友可以参考下。
    2017-02-02
  • Android在启动adb时失败解决方案

    Android在启动adb时失败解决方案

    这篇文章主要介绍了Android在启动adb时失败解决方案的相关资料,需要的朋友可以参考下
    2015-02-02
  • 基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出

    基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出

    这篇文章主要介绍了基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出的相关资料,需要的朋友可以参考下
    2015-12-12
  • Android 判断是否能真正上网的实例详解

    Android 判断是否能真正上网的实例详解

    这篇文章主要介绍了Android 判断是否能真正上网的实例详解相关资料,希望通过本文大家能够掌握判断是否上网的方法,需要的朋友可以参考下
    2017-10-10

最新评论