GestureDetect 手势检测扩展:识别滑动、点击和长按手势

« 返回首页

GestureDetect 手势检测扩展

GestureDetect 是一个免费的手势检测扩展,用于识别各种手势操作。该扩展可以检测上滑、下滑、左滑、右滑、双击、单击和长按手势,为应用提供丰富的交互体验。

包名:aryan.gupta.GesturesDetector

版本:1

发布日期:2020年11月28日

作者:newbiedeveloper (AryanGupta)

文件大小:10.5 KB

下载

.aix拓展文件:

aryan.gupta.GesturesDetector.aix

.aia示例文件:

DetectGesture.aia

功能概述

扩展特性

  • 多种手势识别:支持上滑、下滑、左滑、右滑、双击、单击和长按
  • 简单易用:只需将布局组件绑定到扩展即可使用
  • 非可视组件:不会占用界面空间
  • 事件驱动:通过事件处理各种手势操作
  • 兼容性强:适用于各种布局组件

支持的手势

  • 向上滑动 (Swipe Up)
  • 向下滑动 (Swipe Down)
  • 向左滑动 (Swipe Left)
  • 向右滑动 (Swipe Right)
  • 单击 (Click)
  • 双击 (Double Click)
  • 长按 (Long Click)

使用限制

  • 仅支持排列组件:此扩展仅适用于垂直排列(VerticalArrangement)和水平排列(HorizontalArrangement)组件
  • 不支持滚动排列:手势检测在滚动排列(ScrollArrangement)上无法工作
  • 触摸敏感组件限制:手势在触摸敏感的组件(如按钮、文本框、列表选择器等)上不起作用。如果需要检测手势,请确保排列中有足够的空白区域,或使用禁用点击的标签、图像等组件

截图

所有积木

所有积木

使用示例

使用示例

参考

方法 Methods

布局 Layout(layout)
设置要检测手势的布局组件。需要传入一个垂直排列或水平排列组件作为参数。在 Screen.Initialize 事件中调用此方法来初始化手势检测。

事件 Events

点击 onClick()
当用户在指定的布局组件上单击时触发此事件。
双击 onDoubleClick()
当用户在指定的布局组件上双击时触发此事件。
长按 onLongClick()
当用户在指定的布局组件上长按时触发此事件。
向上滑动 onSwipeUp()
当用户在指定的布局组件上向上滑动时触发此事件。
向下滑动 onSwipeDown()
当用户在指定的布局组件上向下滑动时触发此事件。
向左滑动 onSwipeLeft()
当用户在指定的布局组件上向左滑动时触发此事件。
向右滑动 onSwipeRight()
当用户在指定的布局组件上向右滑动时触发此事件。

使用方法

基本设置

  1. 将 GestureDetect 扩展导入到项目中
  2. 在屏幕初始化事件中,调用 Layout 方法设置要检测手势的布局组件
  3. 使用相应的事件块处理各种手势事件

配置示例

在 Screen1.Initialize 事件中:

当 Screen1.Initialize 时
  调用 GestureDetect1.Layout
    layout = VerticalArrangement1

应用场景

1. 图片浏览应用

创建支持手势操作的图片浏览器:

当 GestureDetect1.onSwipeLeft 时
    显示下一张图片

当 GestureDetect1.onSwipeRight 时
    显示上一张图片

当 GestureDetect1.onDoubleClick 时
    切换全屏显示

2. 导航应用

实现手势导航功能:

当 GestureDetect1.onSwipeUp 时
    显示地图菜单

当 GestureDetect1.onSwipeDown 时
    隐藏地图菜单

当 GestureDetect1.onSwipeLeft 时
    切换到下一个地点

当 GestureDetect1.onSwipeRight 时
    切换到上一个地点

3. 游戏应用

添加游戏控制手势:

当 GestureDetect1.onSwipeUp 时
    角色跳跃

当 GestureDetect1.onSwipeDown 时
    角色下蹲

当 GestureDetect1.onSwipeLeft 时
    角色向左移动

当 GestureDetect1.onSwipeRight 时
    角色向右移动

当 GestureDetect1.onDoubleClick 时
    发射技能

4. 媒体播放器

控制媒体播放:

当 GestureDetect1.onSwipeLeft 时
    快进视频

当 GestureDetect1.onSwipeRight 时
    快退视频

当 GestureDetect1.onSwipeUp 时
    增加音量

当 GestureDetect1.onSwipeDown 时
    减少音量

当 GestureDetect1.onDoubleClick 时
    播放/暂停

5. 阅读应用

电子书阅读控制:

当 GestureDetect1.onSwipeLeft 时
    翻到下一页

当 GestureDetect1.onSwipeRight 时
    翻到上一页

当 GestureDetect1.onSwipeUp 时
    显示目录

当 GestureDetect1.onSwipeDown 时
    显示设置

当 GestureDetect1.onDoubleClick 时
    添加书签

技术说明

手势检测原理

  • 滑动检测:通过检测触摸点的移动轨迹和速度来判断滑动方向
  • 单击检测:检测快速点击并在短时间内没有第二次点击
  • 双击检测:检测短时间内连续两次点击
  • 长按检测:检测触摸点保持按压状态超过设定时间

性能优化建议

  1. 合理设置布局区域:避免在过小的组件上启用手势检测
  2. 避免冲突:不要在有滚动功能的组件上使用滑动手势
  3. 事件处理:保持事件处理函数的简洁性
  4. 测试兼容性:在不同设备上测试手势识别的准确性

常见问题

Q: 手势检测不灵敏怎么办?

A: 检查布局组件是否正确设置,确保组件区域足够大,避免与其他触摸事件冲突。确保布局中有足够的空白区域用于手势检测。

Q: 手势在按钮上不起作用?

A: 这是正常现象。手势检测在触摸敏感的组件(如按钮、文本框等)上不起作用。需要确保有空白区域或使用禁用点击的组件。

Q: 可以在滚动排列中使用吗?

A: 不可以。此扩展不支持在滚动排列(ScrollArrangement)中使用。仅支持垂直排列和水平排列组件。

Q: 如何在同一个组件上检测多种手势?

A: 扩展会自动识别不同的手势,只需为每个手势编写对应的事件处理程序。

Q: 可以自定义手势的灵敏度吗?

A: 当前版本使用默认的手势识别参数,暂不支持自定义灵敏度设置。

Q: 支持哪些布局组件?

A: 支持大部分布局组件,如 HorizontalArrangement、VerticalArrangement、TableArrangement 等。

Q: 如何实现更复杂的图片滑动功能?

A: 如果需要更复杂的图片滑动功能(如带有动画效果的轮播),建议使用 ViewPager 或 VerticalViewPager 扩展配合使用。

版本信息

  • 当前版本:1
  • 发布日期:2020年11月28日
  • 兼容性:Kodular、App Inventor 2
  • 权限要求:无特殊权限要求

致谢

特别感谢以下开发者对扩展开发的支持:

  • Mohamed_Tamer - 技术指导
  • ADDYLIN - 开发支持

原文链接

原版文档:

作者:newbiedeveloper (AryanGupta)

文档反馈