希望问题能说明一切...我一直在网上寻找一个简单的解决方案,我很惊讶地发现没有这种解决方案?我希望这是我可以添加到XML文件中的基本功能?欢迎使用替代方案,但我已经知道它们已经存在了。我只想知道这种简单的方法是否可行(似乎无法在文档中找到任何东西,但谁知道)

最佳答案

没有任何默认方法可以执行此操作。但是使用onTouch()事件来完成此操作相当容易。以下代码将从您触摸按钮开始每0.5秒重复执行一次任务。释放按钮时,任务将被取消。

Handler repeatedHandler = new Handler();
Runnable newRunnable = new Runnable() {
    @Override
    public void run() {
      //Code for the task that needs to be repeated
      //...
      //...
      repeatedHandler.postDelayed(newRunnable, 500);
    }
  };

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
            repeatedHandler.postDelayed(newRunnable, 500);
            break;
            case MotionEvent.ACTION_UP:
            repeatedHandler.removeCallbacks(newRunnable);
            break;
        }
    }
});

10-07 13:00