java如何获得图像悬停的时间?
我想让图像长时间悬停 我试过这个:
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;
}
});
但是它给了我一个空的异常,我能做些什么使它工作呢
提前感谢,
# 1 楼答案
每次执行此方法时,
start
或end
对象都将为null。如果操作已启动,则在尝试使用它进行计算之前,end
永远不会初始化。如果操作已关闭,则在尝试使用它进行计算之前,start
永远不会初始化您可以使开始/结束变量的作用域更大,例如将它们定义为类变量。这样,在尝试使用这两个变量进行任何计算之前,这两个变量都将被初始化为值
# 2 楼答案
它为您提供空指针异常,因为您使用的是“end”和“start”,而它们仍然为空。此外,动作下降发生在动作上升之前。第一次触摸视图时,“向下”操作会触发,而“向上”操作会在抬起手指时触发
此外,您必须在onTouch方法之外定义变量,否则它们永远不会同时被初始化,因为ACTION\u DOWN和ACTION\u UP永远不会同时被调用
# 3 楼答案
换一行就行了
Long start = null, end = null;
到