Java 如何获得图像悬停的时间?
我想让图像长时间悬停 我试过这个:Java 如何获得图像悬停的时间?,java,android,time,ontouchlistener,Java,Android,Time,Ontouchlistener,我想让图像长时间悬停 我试过这个: image.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent event) { Long start = null, end = null; switch (event.getAction()) {
image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
Long start = null, end = null;
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
start = System.currentTimeMillis();
//do somethins....
break;
case MotionEvent.ACTION_DOWN:
end = System.currentTimeMillis();
//do something...
break;
}
if(end-start<1003){
//do something ....
}
return true;
}
});
但是它给了我一个空的异常,我能做些什么使它工作呢
提前感谢,每次执行此方法时,开始或结束对象都将为空。如果操作已启动,则在尝试使用end进行计算之前,end永远不会初始化。如果操作已关闭,则在尝试使用它进行计算之前,不会初始化start
您可以使开始/结束变量的作用域更大,例如将它们定义为类变量。这样,两个变量在进行任何计算之前都将被初始化为值。只需更改这一行即可
长起始=空,结束=空
到
它为您提供空指针异常,因为您使用的是end和start,而它们仍然为空。此外,动作下降发生在动作上升之前。第一次触摸视图时,“向下”操作会触发,而“向上”操作会在抬起手指时触发 此外,您必须在onTouch方法之外定义变量,否则它们永远不会同时被初始化,因为ACTION\u DOWN和ACTION\u UP永远不会同时被调用
Long start = 0L, end = 0L;
@Override
public boolean onTouch(View arg0, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
end = System.currentTimeMillis();
//do something....
if(end-start<1003){
//do something ....
}
return true;
case MotionEvent.ACTION_DOWN:
start = System.currentTimeMillis();
//do something...
return true;
}
}
谢谢你,Kon,但我知道问题是什么,我正在寻找答案,问题是:图像悬停的时间如何长?第一次运行时会给你垃圾数据。
Long start = 0L, end = 0L;
@Override
public boolean onTouch(View arg0, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
end = System.currentTimeMillis();
//do something....
if(end-start<1003){
//do something ....
}
return true;
case MotionEvent.ACTION_DOWN:
start = System.currentTimeMillis();
//do something...
return true;
}
}