Java 安卓按钮-点击触发定时事件
我遇到了一个(也许)小问题,我在谷歌上搜索了一下,但什么也没找到 我想要的是,当用户将手指放在按钮上时,触发一个定时按钮单击事件(例如,每秒钟一次)(而不是长时间单击事件)Java 安卓按钮-点击触发定时事件,java,android,events,button,Java,Android,Events,Button,我遇到了一个(也许)小问题,我在谷歌上搜索了一下,但什么也没找到 我想要的是,当用户将手指放在按钮上时,触发一个定时按钮单击事件(例如,每秒钟一次)(而不是长时间单击事件) 基本上,我有一个按钮和一个计数器变量 cpt <- 0 User --CLICK--> Button cpt <- 1 ... // 1 second later (Button still clicked) cpt <- 2 ... // 1 second later (Button stil
基本上,我有一个按钮和一个
计数器变量
cpt <- 0
User --CLICK--> Button
cpt <- 1
... // 1 second later (Button still clicked)
cpt <- 2
... // 1 second later (Button still clicked)
cpt <- 3
...
cpt按钮
cpt类似的问题以前也曾被问过,下面我们来看看
要创建启动和停止计时器的效果,您很可能需要某种布尔或while循环。在按钮上使用onTouchListener捕捉被触摸的时间,然后相应地处理运动。下面是一个示例,但您可以在提供的链接上阅读更多信息
Button button = (Button) findViewById(R.id.my_button);
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
//start timer here
break;
case MotionEvent.ACTION_UP:
//stop timer
break;
}
}
});
启动计时器更复杂。有很多方法可以做到这一点。他有一些好主意。如果您需要触发的操作数量有限,我将考虑使用<代码>汉德勒< /代码>,并为每一系列事件创建<代码>可运行的< /代码>。如果要执行的第一个操作在5秒后发生,请使用处理程序的postDelayed方法在该时间段后调用相应的Runnable
。通过链接对handler.postDelayed()的调用,您可以在按住按钮的时间越长的情况下启动不同的操作。要取消对action\u UP的操作,只需在处理程序上为该可运行的移除回调即可。示例代码在我所附的链接中
其他方法很有趣,但我从未使用过,包括查看触摸发生的时间,然后从系统时间中减去开始时间,得到动作的长度。然而,有趣的概念是,您需要稍微修改代码以使其工作,因为根据我的经验,在屏幕上按住手指会不断生成触摸事件,这将使计算持续时间变得毫无用处
private MotionEvent touch == null;
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction == MotionEvent.ACTION_DOWN){
if(touch == null)
touch = event;
long duration = android.os.SystemClock.elapsedRealtime()
- touch.getDownTime();
if(duration == THRESHOLD){
//do something
}
}
}
我还没有测试该代码,但你可以看到这个想法。通过检查初始向下触碰的持续时间,您可以随着时间的推移启动不同的操作 在所选答案中,setOnLongClickListener
,我不希望长点击不能解决我的问题。。查看MotionEvent或TouchEvent。你可以在下一次(当手指接触屏幕时)开始计时,然后在抬起时停止计时。看起来就像我正在尝试的那样!请在回答中分享一个片段,我会接受它(如果它有效,当然^)