我想要的是:用户将按钮保持点击 1900 毫秒。如果他在 1900 毫秒之前拿起手指,手机就会停止振动。而如果他将手指放在按钮上超过 1900 秒,calculate()方法就会运行。 我正在使用:postDelayed,因为我阅读它不会干扰 ui 线程。我试图检查 1900 秒是否已经过去,用户还没有选择他的手指,甚至比计算方法运行还要好。 发生错误:如果用户在 1900 秒之前拿起他的手指或只是他触摸并立即拿起,手机会一直振动。虽然它不应该发生,因为我正在使用 MotionEvent.ACTION_UP 检查它。请帮忙 !!
int flag = 0;
int aborted_flag = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
Handler mHandler = new Handler();
if(event.getAction()==MotionEvent.ACTION_DOWN){
scanning();
t1 = System.currentTimeMillis();
vibrator.vibrate(1900);
mHandler.postDelayed(new Runnable() {
public void run() {
check();
}
}, 1901);
}
if(event.getAction()==MotionEvent.ACTION_UP){
if(flag == 0){
t2 = System.currentTimeMillis();
vibrator.cancel();
calculate();
aborted_flag = 1;
}
}
return true;
}
private …Run Code Online (Sandbox Code Playgroud)