前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android多指触控

Android多指触控

作者头像
码客说
发布2020-07-06 23:53:41
8870
发布2020-07-06 23:53:41
举报
文章被收录于专栏:码客码客

前言

自定义组件 https://cloud.tencent.com/developer/article/1525040

事件和方法

多点触控时必须使用getActionMasked()来获取事件类型

多点触控相关事件

事件

简介

ACTION_DOWN

第一个手指初次接触到屏幕时触发

ACTION_POINTER_DOWN

有非主要的手指按下(即按下之前已经有手指在屏幕上)

ACTION_UP

最后一个手指离开屏幕时触发

ACTION_POINTER_UP

有非主要的手指抬起(即抬起之后仍然有手指在屏幕上)

ACTION_MOVE

手指在屏幕上滑动时触发,会多次触发。

多点触控相关的方法:

方法

简介

getActionMasked()

与 getAction() 类似,多点触控需要使用这个方法获取事件类型

getActionIndex()

获取该事件是哪个指针(手指)产生的

getPointerId(int pointerIndex)

获取一个指针(手指)的唯一标识符ID,在手指按下和抬起之间ID始终不变

getX(int pointerIndex)

获取某一个指针(手指)的X坐标

getY(int pointerIndex)

获取某一个指针(手指)的Y坐标

findPointerIndex(int pointerId)

通过PointerId获取到当前状态下PointIndex,之后通过PointIndex获取其他内容

getPointerCount()

获取在屏幕上手指的个数

Pointer

Pointer:

MotionEvent中引入了Pointer的概念,一个pointer就代表一个触摸点,每个pointer都有自己的事件类型,也有自己的横轴坐标值。一个MotionEvent对象中可能会存储多个pointer的相关信息,每个pointer都会有一个自己的id和index。pointer的id在整个事件流中是不会发生变化的,但是index会发生变化

PointerId:

每根手指从按下、移动到离开屏幕,每个手指都会拥有一个固定PointerId.PointerId的值,一般用它来区分是哪根手指

PointerIndex:

每根手指从按下、移动到离开屏幕,每根手指在每一个事件的Index可能是不固定的,因为受到其它手指的影响

PointerId和PointerIndex的变化规律

关于变化规律:

事件

PointerId

PointerIndex

依次按下三根手指

三根手指的id依次为0、1、2

三根手指的index依次为0、1、2

抬起第二根手指

第一根手指的id为0,第三根手指的id为2

第一根手指的index为0,第三根手指的index变为1

抬起第一根手指

第三根手指的id为2

第三根手指的index变为0

可见同一根手指的id是不会变化的,而index是会变化的,但总是以0、1或者0、1、2这样的形式出现,而不可能出现0、2这样间隔了一个的或者1、2这样的没有0索引在内的形式

事件

PointerId

PointerIndex

依次按下两根手指

两根手指的id依次为0、1

两根手指的index依次为0、1

抬起第二根手指

第一根手指的id为0

第一根手指的index为0

按下第三根手指

第三根手指的id为1

第三根手指的index变为1

可见我们无法区分交替按下的两个手指。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 事件和方法
  • Pointer
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档