android onTouchEvent。不同Android版本的不同行为

时间:2015-05-21 21:12:49

标签: android ontouchevent

我的活动很简单:

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

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

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

  3. 至于我,Nexus 7的结果更好。更合乎逻辑。有趣的是,有可能在三星Galaxy Tab 3上以某种方式实现类似的结果吗?顺便说一句,其他三星设备的结果相同:GalaxyTab 4和智能手机S4。也许这是三星设备的问题..嗯

2 个答案:

答案 0 :(得分:1)

它可能只是触摸传感器的不同灵敏度。即使您没有故意移动手指,也会出现小的移动和压力变化,从而导致电容差异。电容的这些差异将由不同的硬件进行不同的解释,有些触摸屏会认为你做了一个小动作而有些则不然。物理硬件并不总是像软件一样精确。

答案 1 :(得分:0)

这是预期的行为,后续的MOVE调用是你的手指“准备”以保持停止。