我想在同一个按钮上执行简单的点击监听器以及长按监听器。但是我需要在延迟5秒后执行长时间点击监听器 在longclicklistener中执行1秒后保持.so使用处理程序它将在5次seocnds之后执行。但我需要完全按下按钮5秒然后代码执行...
答案 0 :(得分:1)
无法更改onLongClick事件的计时器,它由android本身管理。
可能的是使用.setOnTouchListener()。
然后在MotionEvent是ACTION_DOWN时注册。 注意变量中的当前时间。 然后,当注册具有ACTION_UP的MotionEvent并且current_time - actionDown时间>然后做5000毫秒。
非常好:
Button button = new Button();
long then = 0;
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
then = (Long) System.currentTimeMillis();
}
else if(event.getAction() == MotionEvent.ACTION_UP){
if(((Long) System.currentTimeMillis() - then) > 5000){
// 5 second of long click
return true;
}
}
return false;
}
})
答案 1 :(得分:1)
您可以像这样使用Handler
:
Button b=findViewById(R.id.btn);
final Runnable run = new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
// Your code to run on long click
}
};
final Handler handel = new Handler();
b.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction()) {
case MotionEvent.ACTION_DOWN:
handel.postDelayed(run, 5000/* OR the amount of time you want */);
break;
default:
handel.removeCallbacks(run);
break;
}
return true;
}
});