【问题标题】:android onTouchEvent. Different behaviour on different android versions安卓 onTouchEvent。不同安卓版本的不同行为
【发布时间】: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。

我真的不明白为什么会这样。我应该重写一些额外的方法吗?

更新

  1. 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
    ...

  2. 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


【解决方案1】:

可能只是触摸传感器的灵敏度不同。即使您不故意移动手指,您也会有微小的移动和压力变化,这会导致电容差异。不同的硬件会对电容的这些差异做出不同的解释,一些触摸屏会认为你做了一个小动作,而另一些则不会。物理硬件并不总是与软件完全一样。

【讨论】:

    【解决方案2】:

    这是预期的行为,随后的 MOVE 调用是您的手指“不精确”保持停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2014-07-26
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多