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

android input命令支持多指触摸成果展示-千里马framework实战开发

hi

input命令扩展提示部分

generic_x86_64:/ # input -h                                                                                                      
Error: Unknown command: -h
Usage: input [<source>] <command> [<arg>...]The sources are: dpadkeyboardmousetouchpadgamepadtouchnavigationjoysticktouchscreenstylustrackballThe commands and default sources are:text <string> (Default: touchscreen)keyevent [--longpress] <key code number or name> ... (Default: keyboard)tap <x> <y> (Default: touchscreen)mutiple-tap pointId <x> <y> .....(Default: touchscreen)mutiple-touch action pointId <x> <y> ...... (action should be one of down,move,up;Default: touchscreen)swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)press (Default: trackball)roll <dx> <dy> (Default: trackball)

input帮助文案中额外添加了2个命令: mutiple-tap 和 mutiple-touch

mutiple-tap

mutiple-tap pointId …(Default: touchscreen)
代表多个手指的点击事件,其实就是motionevent有down和up两个事件成对,即类似click,有一个按下和抬起
使用规则参数多了一个pointId代表手指,一般从0开始。

mutiple-tap 操作如下:
在这里插入图片描述
在这里插入图片描述

日志打印如下:


dispatchTouchEvent ev = MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=200.0, y[0]=200.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=14469497, downTime=14469497, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_POINTER_DOWN(1), actionButton=0, id[0]=0, x[0]=200.0, y[0]=200.0, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=210.0, y[1]=210.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=14469498, downTime=14469498, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_POINTER_UP(0), actionButton=0, id[0]=0, x[0]=200.0, y[0]=200.0, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=210.0, y[1]=210.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=14469498, downTime=14469498, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_UP, actionButton=0, id[0]=1, x[0]=210.0, y[0]=210.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=14469499, downTime=14469499, deviceId=0, source=0x1002 }

看可以看到app接受到的多指事件也是正常的
第一个手指 down
– 》第二个手指 ACTION_POINTER_DOWN(1)
–》第一个手指抬起ACTION_POINTER_UP(0)
–》第二个手指抬起ACTION_UP

mutiple-touch

mutiple-touch action pointId … (action should be one of down,move,up;Default: touchscreen)

仅仅代表触摸事件,它没有和tap一样有一个down和up成对,它只有一个action,而且这个action还是需要用户指定的,是down,move,up中的一个,一般都需要严格按照规则:
事件先有down,再有move,最后有up的顺序。
使用规则参数相比上面tap额外多了一个action,它来指定当前触摸具体action类型
命令如下:
input mutiple-touch down 0 200 200 1 210 210
在这里插入图片描述按下后其实一直是down状态,会等待up
输入down:
generic_x86_64:/ # input mutiple-touch down 0 200 200 1 210 210
在这里插入图片描述

输入move:
generic_x86_64:/ # input mutiple-touch move 0 220 220 1 230 230
在这里插入图片描述
输入up:
generic_x86_64:/ # input mutiple-touch up 0 220 220 1 230 230

在这里插入图片描述

相关日志:


dispatchTouchEvent ev = MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=200.0, y[0]=200.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=19712743, downTime=19712743, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_POINTER_DOWN(1), actionButton=0, id[0]=0, x[0]=200.0, y[0]=200.0, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=210.0, y[1]=210.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=19712745, downTime=19712745, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=220.0, y[0]=220.0, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=230.0, y[1]=230.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=19720967, downTime=19720967, deviceId=0, source=0x1002 }dispatchTouchEvent ev = MotionEvent { action=ACTION_POINTER_UP(0), actionButton=0, id[0]=0, x[0]=220.0, y[0]=220.0, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=230.0, y[1]=230.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=19724517, downTime=19724517, deviceId=0, source=0x1002 }
dispatchTouchEvent ev = MotionEvent { action=ACTION_UP, actionButton=0, id[0]=1, x[0]=230.0, y[0]=230.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=19724518, downTime=19724518, deviceId=0, source=0x1002 }

日志也展示多指的Down --》 Move—》UP
本文章对应视频手把手教你学framework:

七件套专题:在这里插入图片描述
点击这里 https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

hal+perfetto+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

私聊作者+v(androidframework007)
视频:https://www.bilibili.com/video/BV1wc41117L4/

相关文章:

  • BI 数据分析,数据库,Office,可视化,数据仓库
  • 【Qt】实现 Ctrl + 鼠标滚轮 缩放文本功能
  • 小程序性能优化
  • R语言【base】——scan():读取数据值
  • Android进阶(二十九) 走近 IntentFilter
  • C语言中,设置Linux中系统时间
  • R语言数据分析(五)
  • hbase最新版本配置属性
  • 十大基础排序算法
  • win系统下安装php8.3版本并配置环境变量的详细教程
  • WPF中样式
  • Kubernetes Prometheus 系列|Prometheus介绍和使用|Prometheus+Grafana集成
  • 2024.2.22
  • RSA加密,解密,加签及验签
  • 解决IntelliJ IDEA 2023版本创建Spring项目时Java只能选择17或21的问题
  • Bytom交易说明(账户管理模式)
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS 三角实现
  • Java Agent 学习笔记
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • jQuery(一)
  • mysql_config not found
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python进阶细节
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 读懂package.json -- 依赖管理
  • 关于extract.autodesk.io的一些说明
  • 和 || 运算
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 聊聊sentinel的DegradeSlot
  • 入口文件开始,分析Vue源码实现
  • 微服务框架lagom
  • 消息队列系列二(IOT中消息队列的应用)
  • 学习Vue.js的五个小例子
  • 因为阿里,他们成了“杭漂”
  • # include “ “ 和 # include < >两者的区别
  • #微信小程序:微信小程序常见的配置传旨
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (SpringBoot)第七章:SpringBoot日志文件
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)http协议
  • .Net 8.0 新的变化
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 反射 Reflect
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net中我喜欢的两种验证码
  • @RequestMapping-占位符映射
  • @TableId注解详细介绍 mybaits 实体类主键注解