【发布时间】:2015-05-22 17:27:35
【问题描述】:
我有简单的活动:
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 上:
Event: 0 // 这意味着 ACTION_DOWN
在 Android 4 (4.2.2/4.4.2) 上:
事件:0
事件:2
事件:2
事件:2
...
事件:2
事件:2
...
所以 ACTION_DOWN 和很多 ACTION_MOVE。
我真的不明白为什么会这样。我应该重写一些额外的方法吗?
更新
Android 4.2.2(三星 Galaxy Tab 3)
屏幕上的标签。结果:
.0. (X, Y): 291.4858, 500.48877
.2. (X, Y): 289.98328, 498.9873
.2. (X, Y): 290.48413, 498.34665
.2. (X, Y): 290.48413, 499.50812
.2. (X, Y): 289.15115, 499.4878
.2. (X, Y): 287.6314, 499.4878
.2. (X, Y): 286.37064, 499.4878
...Android 5.1(华硕 Nexus 7)
.0. (X, Y):528.5714、813.4286
停止。这里什么也没有发生。我做了一个小小的手指移动:
.2. (X, Y): 537.51135, 816.00323
.2. (X, Y): 538.3928, 814.7871
.2. (X, Y): 538.3928, 813.8571
.2. (X, Y): 538.866, 813.4286
.2. (X, Y): 539.7322, 813.4286
...
对我来说,Nexus 7 上的结果更好。更符合逻辑。有趣的是,是否有可能在三星 Galaxy Tab 3 上以某种方式实现类似的结果?顺便说一句,在其他三星设备上也有同样的结果:GalaxyTab 4 和智能手机 S4。可能是三星设备的问题.. 嗯
【问题讨论】:
-
可能是触摸驱动问题,您正在测试什么设备,以及 ACTION_MOVE 上每个点的 X 和 Y 值。
标签: android touch-event