MotionEvent获取触摸宽度

MotionEvent支持获取某些输入设备(手指或触控笔)的与屏幕的接触面积和压力大小,主要有以下方法:

getSize () 获取第1个手指与屏幕接触面积的大小
getSize (int pin) 获取第pin个手指与屏幕接触面积的大小
getHistoricalSize (int pos) 获取历史数据中第1个手指在第pos次事件中的接触面积
getHistoricalSize (int pin, int pos) 获取历史数据中第pin个手指在第pos次事件中的接触面积
getPressure () 获取第一个手指的压力大小
getPressure (int pin) 获取第pin个手指的压力大小
getHistoricalPressure (int pos) 获取历史数据中第1个手指在第pos次事件中的压力大小
getHistoricalPressure (int pin, int pos) 获取历史数据中第pin个手指在第pos次事件中的压力大小

注意:

1、获取接触面积大小和获取压力大小是需要硬件支持的。
2、非常不幸的是大部分设备所使用的电容屏不支持压力检测,但能够大致检测出接触面积。
3、大部分设备的 getPressure() 是使用接触面积来模拟的。
4、由于某些未知的原因(可能系统版本和硬件问题),某些设备不支持该方法。

我用不同的设备对这两个方法进行了测试,然而不同设备测试出来的结果不相同,之后经过我多方查证,发现是系统问题,有的设备上只有 getSize()能用,有的设备上只有 getPressure() 能用,而有的则两个都不能用。一般获取到的值是一个小数,在0-1之间。

由于获取接触面积和获取压力大小受系统和硬件影响,使用的时候一定要进行数据检测,以防因为设备问题而导致程序出错。


转载来自:点击打开链接



猜你喜欢

转载自blog.csdn.net/xiaoyi848699/article/details/79025435