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之间。
由于获取接触面积和获取压力大小受系统和硬件影响,使用的时候一定要进行数据检测,以防因为设备问题而导致程序出错。
转载来自:点击打开链接