Java 使用onLongClickListener快速更改值
我正在尝试创建一组按钮,只需轻触一次即可将值向上或向下更改1,并通过按住按钮快速更改值。我不知道如何让值快速变化。以下是我所拥有的: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
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方法之外。