Android系统是怎么知道我们点击哪个按钮的?

我最近又开始想着鼓捣游戏开发了。大家知道在游戏开发中经常要处理“碰撞检测”,这是一个非常吃性能的计算过程,我就一直在想有什么办法能够优化“碰撞检测”执行效率。

 

然后我突然想到在操作手机时,我的手指相对于Android系统不就是一个经典的“碰撞检测”吗?

首先我们来看这样一个场景:屏幕上有N个按钮,我们随意点击其中一个,手机怎么知道我点的是哪一个?

可能有小伙伴会问:这不是很简单吗?因为你点了屏幕啊,屏幕知道你点的是哪个按钮就行了啊。

但是事情不是这样。在冯诺依曼的计算机模型中,我们常说的屏幕被分为显示屏和触摸屏,分别表示输出设备、输入设备。

与一般的输入设备键盘不同,触摸屏只能接收到手指在屏幕上的坐标。在收到坐标信息之后,它将物理信号转化为二进制的数据,并交给操作系统去处理。

具体到Android系统中,它的整个单击事件处理流程是这样的:

1、触摸屏收到坐标

2、将坐标信息转为二进制信息交给Android

3、Android系统将触摸事件再进行一次封装,并交给当前页的Activity

4、activity把触摸事件再传递给PhoneWindow,PhoneWindow再传递给DecorView

5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值