我的活动很简单:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("Event: ", event.getAction() + "");
return super.onTouchEvent(event);
}
}
当我在屏幕上选项卡时(只是将手指放在屏幕上没有任何移动)onTouchEvent被调用但在android v4(4.2.2或4.4.2)和v5(5.1)上有不同的结果。
Android 5.1上的 :
事件:0 //这意味着ACTION_DOWN
(4.2.2 / 4.4.2):
事件:0
事件:2
事件:2
事件:2
......
事件:2
事件:2
...
所以ACTION_DOWN和很多ACTION_MOVE。
我真的不明白为什么会这样。我应该覆盖一些额外的方法吗?
已更新
Android 4.2.2(三星Galaxy Tab 3 )
屏幕上的标签。结果:
0.0。 (X,Y):291.4858,500.48877
0.2。 (X,Y):289.98328,498.9873
0.2。 (X,Y):290.48413,498.34665
0.2。 (X,Y):290.48413,499.50812
0.2。 (X,Y):289.15115,499.4878
0.2。 (X,Y):287.6314,499.4878
0.2。 (X,Y):286.37064,499.4878
...
Android 5.1( ASUS Nexus 7 )
0.0。 (X,Y):528.5714,813.4286
的停止即可。这里什么都没发生我做一个小小的手指移动:
0.2。 (X,Y):537.51135,816.00323
0.2。 (X,Y):538.3928,814.7871
0.2。 (X,Y):538.3928,813.8571
0.2。 (X,Y):538.866,813.4286
0.2。 (X,Y):539.7322,813.4286
...
至于我,Nexus 7的结果更好。更合乎逻辑。有趣的是,有可能在三星Galaxy Tab 3上以某种方式实现类似的结果吗?顺便说一句,其他三星设备的结果相同:GalaxyTab 4和智能手机S4。也许这是三星设备的问题..嗯
答案 0 :(得分:1)
它可能只是触摸传感器的不同灵敏度。即使您没有故意移动手指,也会出现小的移动和压力变化,从而导致电容差异。电容的这些差异将由不同的硬件进行不同的解释,有些触摸屏会认为你做了一个小动作而有些则不然。物理硬件并不总是像软件一样精确。
答案 1 :(得分:0)
这是预期的行为,后续的MOVE调用是你的手指“准备”以保持停止。