我应该为我的Android应用程序使用什么EVENT LISTENER

时间:2010-05-31 11:48:20

标签: android android-widget

在我的应用程序中,当单击并按住一个特定图像按钮时,我必须能够计算按下图像按钮的时间。任何人都可以通过提供一些简单的指导或示例代码来帮助我。我真的被困在这里了。是否有针对此特定要求的特定事件侦听器。我正在专门为触摸屏手机编写这个应用程序。

2 个答案:

答案 0 :(得分:2)

您想要使用的是:

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的调用之间保持不变。使用此功能,您也不会干扰按钮的正常操作;你可以设置一个能正常运行的点击监听器。注意:直到触摸事件的动作从DOWN(或MOVE)变为UP时才会发生'click'操作。

答案 1 :(得分:1)

尝试使用来自http://developer.android.com/reference/android/view/KeyEvent.Callback.html的on ***回调。

例如Button.onKeyDown,将当前时间保存在变量中,Button.onKeyDown计算与上次保存时间的差值。