Floating View 扩展:悬浮视图扩展,将组件转换为悬浮窗口

« 返回首页

Floating View 扩展

Floating View 是一个免费的悬浮视图扩展,用于将任意可见组件转换为悬浮窗口。通过该扩展,可以将组件的可见部分转移到悬浮视图中,即使用户在其他应用中操作时也能保持活跃状态。使用此功能的应用示例包括即时通讯应用等。

包名:com.jdl.FloatingView

版本:1.2

发布日期:2020年6月14日

最后更新:2020年6月28日

作者:Jarlisson

文件大小:20.2 KB

下载链接

扩展文件:

com.jdl.FloatingView.aix

示例文件:

FloatingView.aia

功能概述

扩展特性

  • 悬浮窗口:将任意可见组件转换为悬浮视图
  • 跨应用显示:在其他应用上层保持显示
  • 灵活定位:支持自定义悬浮窗口位置
  • 组件重叠:支持将一个组件重叠到另一个组件上
  • 大小调整:可调整悬浮窗口的宽度和高度
  • 可点击性:可设置悬浮窗口是否可点击
  • 动画效果:支持显示和隐藏动画
  • 移动控制:支持启用或禁用窗口移动

截图

积木示例

Setup View

Overlap View

Block 1

应用截图

截图1

截图2

截图3

截图4

截图5

截图6

函数

SetupView 设置视图(视图组件,可点击,位置X,位置Y)
初始化要悬浮的组件。
  • 视图组件:组件类型,要转换为悬浮视图的组件
  • 可点击:布尔类型,悬浮窗口是否可点击
  • 位置X:数字类型,悬浮窗口的X坐标位置
  • 位置Y:数字类型,悬浮窗口的Y坐标位置
OverlapView 重叠视图(主组件,子组件,边距)
将任意可见组件重叠到另一个组件上(NEW)。
  • 主组件:组件类型,底部的基础组件
  • 子组件:组件类型,要重叠在上面的组件
  • 边距:列表类型,边距设置 [左, 上, 右, 下]
SetPosition 设置位置(位置X,位置Y)
设置悬浮窗口的位置。
  • 位置X:数字类型,X坐标位置
  • 位置Y:数字类型,Y坐标位置
SetSize 设置大小(宽度,高度)
设置悬浮窗口的大小。
  • 宽度:数字类型,窗口宽度
  • 高度:数字类型,窗口高度
RemoveView 移除视图(动画)
移除悬浮视图。
  • 动画:布尔类型,是否使用动画效果
SetClickable 设置可点击(可点击)
设置悬浮窗口是否可点击。
  • 可点击:布尔类型,是否可点击
EnableMove 启用移动(启用)
启用或禁用悬浮窗口的移动功能。
  • 启用:布尔类型,是否允许移动
Back 返回()
模拟返回键操作。

属性

PositionX 位置X
获取或设置悬浮窗口的X坐标位置。
  • 类型:数字类型
  • 默认值:0
PositionY 位置Y
获取或设置悬浮窗口的Y坐标位置。
  • 类型:数字类型
  • 默认值:0
Width 宽度
获取或设置悬浮窗口的宽度。
  • 类型:数字类型
  • 默认值:自动
Height 高度
获取或设置悬浮窗口的高度。
  • 类型:数字类型
  • 默认值:自动
IsViewActive 视图是否激活
获取悬浮视图是否处于激活状态。
  • 类型:布尔类型
  • 只读:是

应用场景

悬浮聊天窗口

先检查悬浮窗权限;权限不足时跳转设置,授权后再创建并显示悬浮布局:

when 按钮_显示.Click() {
  if FloatingView1.CheckDrawOverlayPermission() {
    FloatingView1.SetupView(垂直布局_悬浮, true, 100, 500)
    FloatingView1.ShowFloatingView()
  } else {
    FloatingView1.RequestDrawOverlayPermission()
  }
}

when FloatingView1.ClickView() {
  标签_状态.Text = "悬浮窗口已点击"
}

when 按钮_关闭.Click() {
  FloatingView1.DismissViewFloating()
}

移动与重叠组件

可以用 SetPosition 移动悬浮窗口,也可以把一个可见组件重叠到另一个组件上:

when 按钮_移动.Click() {
  FloatingView1.SetPosition(200, 300)
}

when FloatingView1.PositionMoved(x, y) {
  标签_位置.Text = join("位置:", x, ", ", y)
}

when 按钮_重叠.Click() {
  FloatingView1.OverlapView(垂直布局_背景, 标签_图标, [10, 10, 10, 10], 4)
}

使用说明

基本使用步骤

  1. 添加扩展:将 FloatingView 扩展添加到项目中
  2. 设计组件:创建要悬浮的布局组件(如 HorizontalArrangement)
  3. 设置悬浮:使用 SetupView 方法设置悬浮视图
  4. 配置参数:设置位置、大小、可点击等参数
  5. 测试运行:在设备上测试悬浮功能

重要提示

  • 权限要求:需要在应用设置中授予悬浮窗权限
  • 兼容性:不同 Android 版本的悬浮窗行为可能不同
  • 内存管理:及时移除不需要的悬浮视图
  • 用户体验:提供显示/隐藏悬浮窗的选项

性能优化建议

  1. 简洁设计:悬浮组件应保持简洁,避免过于复杂
  2. 适时移除:不需要时及时移除悬浮视图
  3. 避免过多:不要同时创建多个悬浮窗口
  4. 合理大小:设置合适的窗口大小,避免遮挡主要内容

技术说明

悬浮窗口原理

  • WindowManager:使用 Android 的 WindowManager 系统服务
  • 布局参数:通过 LayoutParams 设置窗口属性
  • 权限系统:需要 SYSTEM_ALERT_WINDOW 权限

边距设置

重叠视图的边距列表格式:

  • 索引 0:左边距
  • 索引 1:上边距
  • 索引 2:右边距
  • 索引 3:下边距

动画效果

移除视图时支持平滑的淡出动画,提升用户体验。

常见问题

Q: 悬浮窗不显示怎么办?

A: 检查应用是否获得了悬浮窗权限,在设置中手动授予。

Q: 悬浮窗被系统杀死怎么办?

A: 部分厂商的系统会限制悬浮窗,需要在电池优化设置中排除应用。

Q: 可以悬浮多个组件吗?

A: 可以创建多个 FloatingView 实例,但建议不要同时显示太多悬浮窗。

Q: 悬浮窗可以拖动吗?

A: 使用 EnableMove(true) 方法启用拖动功能。

Q: 如何自定义悬浮窗样式?

A: 在设计器中自定义要悬浮的布局组件的外观。

版本信息

  • 当前版本:1.2
  • 发布日期:2020年6月14日
  • 最后更新:2020年6月28日
  • 兼容性:Kodular、App Inventor 2
  • 权限要求:SYSTEM_ALERT_WINDOW(悬浮窗权限)

开源信息

GitHub 仓库:https://github.com/jarlisson2/FloatingViewAIX

版权信息

本文档基于 Kodular Community 论坛帖子整理翻译,版权归原作者所有。

  • 原作者:Jarlisson
  • 原始网址:https://community.kodular.io/t/floating-view-float-your-component-free/68308

文档翻译和整理:AI2中文网


最后更新:2024年12月29日

文档反馈