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;
}

09-30 20:42