在我的应用程序中,当点击并按住一个特定的图像按钮时,我必须能够计算图像按钮被按住的时间。有人可以通过给出一些简单的指导或示例代码来帮助我吗?我真的卡在这里了。对于这个特定的要求,是否有任何特定的事件侦听器?我只为触摸屏手机编写此应用程序。
在我的应用程序中,当点击并按住一个特定的图像按钮时,我必须能够计算图像按钮被按住的时间。有人可以通过给出一些简单的指导或示例代码来帮助我吗?我真的卡在这里了。对于这个特定的要求,是否有任何特定的事件侦听器?我只为触摸屏手机编写此应用程序。
您需要使用的是这个:
OnTouchListener touchListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
Log.d(LOG_TAG, "Action is: " + action);
switch (action){
case MotionEvent.ACTION_DOWN:
timeAtDown = SystemClock.elapsedRealtime();
break;
case MotionEvent.ACTION_UP:
long durationOfTouch = SystemClock.elapsedRealtime() - timeAtDown;
Log.d(LOG_TAG, "Touch event lasted " + durationOfTouch + " milliseconds.");
break;
}
return false;
}
};
button.setOnTouchListener(touchListener);
timeAtDown是一个long
,定义为类字段,因为它需要在调用touchListener之间保持不变。使用这个方法,您不会干扰按钮的正常操作;您可以设置一个单击监听器,它将正常工作。注意:'click'操作直到触摸事件的动作从DOWN(或MOVE)转换为UP时才会发生。
尝试使用http://developer.android.com/reference/android/view/KeyEvent.Callback.html中的on***回调函数进行实验。
例如,使用Button.onKeyDown,在一个变量中保存当前时间,并计算与上次保存时间的差异。