我应该使用哪个事件监听器来开发我的Android应用程序?

3

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

2个回答

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之间保持不变。使用这个方法,您不会干扰按钮的正常操作;您可以设置一个单击监听器,它将正常工作。注意:'click'操作直到触摸事件的动作从DOWN(或MOVE)转换为UP时才会发生。


1

托尼,这对于带有键盘的手机很好用。你能否提供一些类似功能在触摸屏手机上的建议? - Mithraa
你确定这在触摸屏上失败了吗?你试过了吗?请检查MotionEvent类。 - Pentium10
你可以用手指按住一个按钮,这至少在视觉上是有效的(只要我手指在屏幕上,按钮就一直按下)。 所以如果这不能被正确命名的 onKey 处理程序跟踪,我会感到惊讶。 - Toni Menzel
好的Toni,我会去看看。我现在在办公室里。我试过后会尽快告诉你。非常感谢,伙计。 - Mithraa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接