Android Button快速滑过,ACTION_UP事件不触发的有关问题的解决

Android Button快速滑过,ACTION_UP事件不触发的问题的解决switch (event.getAction()) {case MotionEvent.

Android Button快速滑过,ACTION_UP事件不触发的问题的解决
switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按钮按下逻辑 break; case MotionEvent.ACTION_UP: //按钮弹起逻辑 break;}在一般情况下,这样写是没有问题的,但是当手指快速滑过这个Button时,就会发现只触发了

?

ACTION_DOWN时间,没有触发ACTION_UP,就会导致,按钮按下的逻辑代码一直会执行。当焦点移动到件之外,此时会触发ACTION_CANCEL,而不是ACTION_UP,造成按下的逻辑一直会执行。意思就是,当用户保持按下操作,并从你的控件转移到外层控件时,会触发ACTION_CANCEL。为了解决这个

问题,上述代码需要修改为:

switch (event.getAction()) {    case MotionEvent.ACTION_DOWN:    //按钮按下逻辑    break;    case MotionEvent.ACTION_UP:    //按钮弹起逻辑    break;    case MotionEvent.ACTION_CANCEL:    //按钮弹起逻辑    break;}

?

ACTION_UP处理的是在Button原位置弹起,ACTION_CANCEL处理的是焦点离开Button,两者都需要处理

,才能解决这个问题。