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

国外做家居类的网站怎么弄网站关键词

国外做家居类的网站,怎么弄网站关键词,wordpress 主题 数据库,辽宁建设工程信息网注册在 Flutter Android 应用中实现画中画功能 画中画(Picture-in-Picture, PiP)模式允许您的应用在一个固定在屏幕角落的小窗口中运行,同时用户可以与其他应用进行交互。本指南将介绍如何在 Flutter Android 应用中实现画中画功能,包括其局限性和解决方案。 项目地址 flutter_p…

在 Flutter Android 应用中实现画中画功能

画中画(Picture-in-Picture, PiP)模式允许您的应用在一个固定在屏幕角落的小窗口中运行,同时用户可以与其他应用进行交互。本指南将介绍如何在 Flutter Android 应用中实现画中画功能,包括其局限性和解决方案。

项目地址

flutter_pip

前提条件

  • 需要 Android 8.0 (API level 26) 或更高版本才能完全支持画中画功能

  • 基本的 Flutter 插件开发知识

  • 基本的 Android 开发知识

实现概述

实现包含两个主要组件:

  1. FlutterPipController: 处理画中画功能和状态管理

  2. FlutterPipPlugin: 桥接 Flutter 和原生 Android 代码

主要特性

  • 画中画模式支持检测

  • 自定义宽高比配置

  • 平滑过渡的源矩形提示

  • 画中画状态监控和回调

  • 非视频内容的交叉淡入淡出动画

核心实现

1. 检查画中画支持

在使用画中画之前,我们需要检查设备是否支持:

public boolean isSupported() {Activity activity = mActivity.get();if (activity == null) {return false;}// Requires Android 8.0 (API 26) or higherif (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {return false;}final PackageManager pm = activity.getApplicationContext().getPackageManager();return pm != null && pm.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
}

2. 配置画中画参数

画中画模式可以自定义几个参数:

public boolean setup(@Nullable Rational aspectRatio,@Nullable Boolean autoEnterEnabled,@Nullable Rect sourceRectHint) {// ... version checks and null checks ...PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();if (aspectRatio != null) {builder.setAspectRatio(aspectRatio);}if (sourceRectHint != null) {builder.setSourceRectHint(sourceRectHint);}// Disable seamless resize for non-video contentbuilder.setSeamlessResizeEnabled(false);activity.setPictureInPictureParams(builder.build());
}

Flutter 集成限制和解决方案

1. 自动进入画中画模式限制

Flutter 不正确地委托 Android 生命周期事件,如 onPauseonPiPModeChanged。这给实现自动进入画中画模式带来了挑战。

限制:

@ChecksSdkIntAtLeast(api = Build.VERSION_CODES.S)
public boolean isAutoEnterSupported() {// We could support this on Android 12+, but Flutter limitations prevent itreturn false;
}

解决方案:
我们不依赖自动进入画中画模式,而是提供显式的方法来进入和退出画中画模式,这些方法可以从 Flutter 代码中调用:

public boolean start() {if (!isSupported() || isActived() || !isPipEnabled()) {return false;}Activity activity = mActivity.get();if (activity == null) {return false;}activity.enterPictureInPictureMode(mParamsBuilder.build());return true;
}

2. 画中画状态变化检测

由于 Flutter 不提供画中画状态变化事件,我们实现了一个轮询机制来检测状态变化。

解决方案:

private void startStateMonitoring() {// Poll every 100ms to check PiP statemCheckStateTask = new Runnable() {@Overridepublic void run() {checkPipState();mHandler.postDelayed(this, CHECK_INTERVAL_MS);}};mHandler.post(mCheckStateTask);
}

3. 画中画退出处理

Android 不提供直接退出画中画模式的方法。

解决方案:

public void stop() {if (!isSupported() || !isActived()) {return;}Activity activity = mActivity.get();if (activity == null) {return;}// Move the activity to background instead of truly stopping PiPactivity.moveTaskToBack(false);
}

最佳实践

  1. 资源管理: 始终正确释放资源:
public void dispose() {stopStateMonitoring();mPipParams = null;mParamsBuilder = null;mHandler = null;mLastPipState = false;mCheckStateTask = null;
}
  1. 状态监控: 跟踪画中画状态变化并通知 Flutter:
private void checkPipState() {boolean currentState = isActived();if (currentState != mLastPipState) {mLastPipState = currentState;notifyPipStateChanged(currentState ? PipState.Started : PipState.Stopped);}
}
  1. 交叉淡入淡出动画: 对于非视频内容,禁用无缝调整大小:
mParamsBuilder.setSeamlessResizeEnabled(false);

结论

虽然在 Flutter Android 应用中实现画中画功能受到 Flutter 处理 Android 生命周期事件的一些限制,但我们可以通过轮询状态检测和显式控制方法来解决这些问题。这里提供的解决方案提供了一个可靠且稳定的实现,同时保持良好的用户体验。

请记住要在不同的 Android 版本和设备配置上进行全面测试,因为画中画行为在不同的 Android 实现中可能会有所不同。

参考

  • Android 官方文档 - 画中画

PS

这个项目会持续维护下去,而且已经在准备发布pub.dev, 目前上面的文档是AI帮助生成的,有些不太准确和完善,但基本路线是对的,后续会持续补充完善。

http://www.yayakq.cn/news/810336/

相关文章:

  • 长春建设工程信息网站网站开发工程师要求
  • 做网站要用到哪些技术阿里巴巴官方网站
  • 单页式网站 seowordpress recent posts
  • php网站后台程序网站开发协议书 英文版
  • 河南省监理协会官方网站建设天津定制网站建设商店设计
  • 深圳企业培训百度上做优化
  • 外贸网站优化谷歌关键词排名信用公示信息系统官网
  • 网站商城微信支付宝支付宝支付接口国外服装图案设计网站
  • 求个没封的w站2022wordPress图片查看插件
  • 做视频网站 带宽多少才合适网站建设规划书300字
  • 网站建设加盟模式北京网站设计学习
  • 什么是网站的权重做啥网站好
  • 网站打开慢深圳网站程序开发
  • 安徽网站推广公司注册城乡规划师通过率
  • 如何让网站打不开 解析江苏建设工程有限公司简介
  • 网站建设性能分析推广怎么做
  • 网站平台建设工作汇报做网站哪家网站好
  • 静态企业网站模板网站建设实践考试试题
  • 类似酷家乐做庭院的网站wordpress做个游戏
  • 廊坊网站建设兼职网站如何提升用户体验
  • 做一个付费网站多少钱郑州同济医院妇科怎么样
  • 做网站 长观看床做视频网站
  • 泰和县建设局网站能浏览的海外网站
  • 冷库 东莞网站建设网站制作计划书模板
  • 网站制作与网页设计注册公司和建网站
  • 培训网站方案应用公园免费版下载
  • 网站开发与设计实训实训报告html网站支付链接怎么做的
  • 国际网站哪里做设计说明万能模板100字
  • 成都网站开发公司有哪些百度seo运营工作内容
  • 朝阳市网站制作宁波快速建站公司