Java 使用onLongClickListener快速更改值

Java 使用onLongClickListener快速更改值,java,android,button,listener,wear-os,Java,Android,Button,Listener,Wear Os,我正在尝试创建一组按钮,只需轻触一次即可将值向上或向下更改1,并通过按住按钮快速更改值。我不知道如何让值快速变化。以下是我所拥有的: btPlus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mTempo=mTempo+1; setTempo(mTempo + 1); tvTempo.se

我正在尝试创建一组按钮,只需轻触一次即可将值向上或向下更改1,并通过按住按钮快速更改值。我不知道如何让值快速变化。以下是我所拥有的:

    btPlus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mTempo=mTempo+1;
        setTempo(mTempo + 1);
        tvTempo.setText(Integer.toString(mTempo));
      }  
    });
    btPlus.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public void onLongClick(View view) {
            mTempo = mTempo + 1;
            setTempo(mTempo + 1);
            tvTempo.setText(Integer.toString(mTempo));
        }
    });                              
    btMinus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mTempo=mTempo-1;
            setTempo(mTempo - 1);
            tvTempo.setText(Integer.toString(mTempo));
        }
    });
    btMinus.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public void onLongClick(View view) {
            mTempo = mTempo - 1;
            setTempo(mTempo - 1);
            tvTempo.setText(Integer.toString(mTempo));
        }
    });    
    return rootView;
}

谢谢您的帮助。

按住按钮比长时间单击按钮更重要。你需要一个

在onPressed方法中,检查MotionEvent是向上还是向下,然后开始/停止计数

编辑:尝试在线程中计数,类似于:

Final Thread t = new Thread(new Runnable(){
       @Override public void run(){
          while(!t.isInterrupted(){
             setTempo(mTempo++);
          }
       }
switch (event){
case ACTION_DOWN: 
       t.start();
       break;
case ACTION_UP:
       t.interrupt();
       break
}

我可以理解使用onTouchListener,但我仍然在努力让它在按下按钮时连续计数。还有其他想法吗?你可以在DOWN上开始一个新的线程并开始它。你马上打断它。线程在一段时间内计数,而不是中断循环。你的mTempoMind能帮你多点忙吗?它说t是从一个内部类访问的,在第一种情况下需要声明为final,然后在第二种情况下t可能没有被初始化。是的,没错,答案中做了一些更改。t是noe final,并在开始时初始化。您可以将线程声明放在onPressed方法之外。