android - 我应该为我的 Android 应用程序使用什么事件监听器

标签 android android-widget

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

最佳答案

你要用的是这个:

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 的调用之间保持不变。使用它您也不会干扰按钮的正常操作;您可以设置一个可以正常运行的点击监听器。注意:在触摸事件的 Action 从向下(或移动)变为向上之前,不会发生“点击”操作。

关于android - 我应该为我的 Android 应用程序使用什么事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943293/

相关文章:

android - 如何正确更新AppWidget?

android - appWidgetIds 只包含一个 id

android - 如何更新 OREO 中的 Widget(AlarmManager 在数小时/数天后停止)

android - 小部件问题 : BroadcastQueue: Background execution not allowed: receiving Intent

java - 我需要使用线程吗?

android - 确认使用服务器观看了 admob 奖励视频

android - SQLite julianday() 和 Android

javascript - HTML5 在 Javascript 中从 Canvas 保存图像 (Android)

java - 如何在 Android 中通过 Asynctask 返回不同的对象

android - Ice Cream Sandwich 严格模式