我们如何在 android 中增加按钮长按监听器的时间?
how can we increase button long click listener time in android?
我想在同一个按钮上执行简单的点击监听器和长按监听器。但是我需要在延迟 5 秒后执行长按监听器
在 longclicklistener 中,在按住 1 秒后执行。因此使用处理程序,它将在 5 seocnds.but 后执行,我需要准确按下按钮 5 秒,然后执行代码 ...
无法更改 onLongClick 事件的计时器,它由 android 自己管理。
可以使用 .setOnTouchListener()。
然后在MotionEvent 为ACTION_DOWN 时注册。
注意变量中的当前时间。
然后当一个带有 ACTION_UP 的 MotionEvent 被注册并且 current_time - actionDown 时间 > 5000 ms 然后做一些事情。
差不多:
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;
}
})
你可以这样使用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;
}
});
我想在同一个按钮上执行简单的点击监听器和长按监听器。但是我需要在延迟 5 秒后执行长按监听器 在 longclicklistener 中,在按住 1 秒后执行。因此使用处理程序,它将在 5 seocnds.but 后执行,我需要准确按下按钮 5 秒,然后执行代码 ...
无法更改 onLongClick 事件的计时器,它由 android 自己管理。
可以使用 .setOnTouchListener()。
然后在MotionEvent 为ACTION_DOWN 时注册。 注意变量中的当前时间。 然后当一个带有 ACTION_UP 的 MotionEvent 被注册并且 current_time - actionDown 时间 > 5000 ms 然后做一些事情。
差不多:
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;
}
})
你可以这样使用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;
}
});