gpt4 book ai didi

java - 在android中查找触摸事件之间的持续时间

转载 作者:行者123 更新时间:2023-11-29 05:23:17 25 4
gpt4 key购买 nike

我已经设置了一个 onTouchListener,它允许用户恰好点击 textView2 10 次,如下所示。我的目标是测量触摸 1 和触摸 2 之间的时间,并将其存储为变量,比如 time1。但是,我不太确定该怎么做。我的一个想法是设置一个变量 i,它测量 TouchListener 被点击的次数。我正在考虑潜在地测量 i 包含特定值的时间(例如,如果 i 等于 1 持续 1 秒,这意味着触摸 1 和触摸 1 之间的时间触摸 2 为 1 秒)。但是我不确定如何实现它,我什至不确定这是否是正确的方法。有谁知道如何解决这个问题?

.java 文件

public class MainActivity extends Activity {

int i;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final TextView textView2 = (TextView)findViewById(R.id.textView2);

i=0;

textView2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
i++;
if (i==10) textView2.setOnTouchListener(null);

}
return false;
}
});

}

最佳答案

在你的类里面

private long pressTime = -1l;
private long releaseTime = 1l;
private long duration = -1l;

然后在你的onTouch方法中

if(event.getAction() == MotionEvent.ACTION_DOWN){
pressTime = System.currentTimeMillis();
if(releaseTime != -1l) duration = pressTime - releaseTime;
}
else if(event.getAction() == MotionEvent.ACTION_UP){
releaseTime = System.currentTimeMillis();
duration = System.currentTimeMillis() - pressTime;
}

现在您有了触摸事件之间的持续时间:

  • 按下时的持续时间是上次松开和当前按下之间的时间(如果您之前按下并松开按钮)。
  • 松开时的持续时间是从上次按下到当前松开的时间。

-编辑-

如果你需要知道所有事件的时间差异,你可以做类似的事情

private long lastEvent = -1l;
private long duration = -1l;

然后在onTouch事件中

if(lastEvent != -1l) duration = System.currentTimeMillis() - lastEvent;
lastEvent = System.currentTimeMillis();

您还可以创建持续时间列表

private List<Long> durations = new ArrayList<Long>();

并且在 onTouch 而不是 duration = ... do

durations.add(System.currentTimeMillis() - lastEvent); 

这对于检查所有连续事件之间的所有持续时间可能很有用。例如,如果您想知道按下、拖动、停止拖动、开始拖动和抬起之间的时间,您可以在每次抬起后检查您的列表,而不必不断地检查单个持续时间。

关于java - 在android中查找触摸事件之间的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com