AndroiBug->SM-G9600 关于焦点触摸点击无反应问题分析

情景

功能按钮其他设备都可以,唯独 三星S9 点击没反应;

源码分析

定位位置,程序执行逻辑 -> 通过if判断去执行功能的,也就是说判断有问题;
好!我们看一下判断哪里出了问题
在这里插入图片描述

画图分析

在这里插入图片描述

通过UML序列图大概了解到,ACTION_UP 抬起后,计算了坐标点的位置,之后Math.abs(ex)获取值,判断程序逻辑
仔细看,这里他拿到的绝对值是 float类型的,也就是说三星设备拿到的绝对值 是 float类型,为什么呢?
在这里插入图片描述

Math.abs源代码分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-edhL8ZAA-1603944815153)(media/16039419100326/16039428734795.jpg)]

  • 返回的绝对值int值。 如果参数不是负数,则返回该参数。 如果参数为负数,则返回该参数的否定。 请注意,如果参数等于值Integer.MIN_VALUE ,最负表示的int值,结果是相同的值,且为负。 PARAMS: 一个 - 其绝对值是确定的说法 返回: 参数的绝对值。

返回的绝对的int值…可是并没有返回int值呀!这个可能跟我本地api有关系,我是用的是 targeSdkVersion-> 26.0.2,是17年7月份的,不得不怀疑跟这个有关,研究一下,写个demo

demo测试也是一样,获取到的也是float类型,肯定有些地方有问题;

解决方案

1.强转为 int 类型,这样获取到的值就是int类型了;
2.更改判断逻辑;
由于项目比较老,强转为Int类型就可以了;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值