brown = (Button) findViewById(R.id.brownButton);
brown.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
count++;
Log.d("count", "" + count);
return true;
} else if (event.getAction() == (MotionEvent.ACTION_UP)) {
count--;
Log.d("count", "" + count);
return true;
}
return false;
}
});
当我的手指按住按钮时,我的计数只会增加一次。当我放开时,它会相应减少。请有人告诉我,只要手指按住按钮,我如何才能使代码递增。谢谢。
最佳答案
触摸监听器的工作方式如下:
它接收到ACTION_DOWN事件(用户触摸)
然后,它接收以下所有事件(如果返回true),并将以下所有事件视为ACTION_MOVE事件
触摸修饰器将继续接收ACTION_MOVE事件,直到接收到ACTION_UP或ACTION_CANCEL事件。
因此,仅触发一次ACTION_DOWN,然后触发任意数量的ACTION_MOVE事件,然后触发单个ACTION_UP或ACTION_CANCEL。
如果您希望计数器增加,则需要检查ACTION_MOVE事件。
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
//do something on DOWN
break;
case MotionEvent.ACTION_MOVE:
//do something on MOVE
break;
case MotionEvent.ACTION_UP:
//do something on UP
break;
}
return true;
}