【问题标题】:Handling the entry and exit of a finger in the button area处理按钮区域中手指的进出
【发布时间】:2019-07-19 05:08:10
【问题描述】:

有一个gButton按钮,有一个onTouch监听器:

gButton.setOnTouchListener (new View.OnTouchListener () {
    public boolean onTouch (View v, MotionEvent event) {
        if (event.getAction () == MotionEvent.ACTION_DOWN) {
         ...
        } else if (event.getAction () == MotionEvent.ACTION_UP) {
        ...
        }
        return false;
    }
});

ACTION_DOWNACTION_UP(按下按钮/释放)做了一些事情,但是按下事件只有在按钮被触摸时才会发生,如果按下按钮并且你拿开手指,什么都不会发生(没有手指敲击)

我尝试在ACTION_DOWN 之后添加其他“else if”条件,例如ACTION_OUTSIDE(我从页面中取出所有内容:https://developer.android.com/reference/android/view/MotionEvent.html),但什么也没发生。是的,我使用了If,而不是Switch

我需要确保当我触摸按钮时(如果手指完全位于按钮区域,即使第一次触摸是在空白区域的某处并且手指移动到按钮),一些动作是执行(例如,带有文本"On "Toast 方法),当您从按钮区域释放手指或从按钮区域移动手指时,执行了其他操作(Toast 的值为Off)

我尝试通过在我的代码中更正类似问题的答案之一来做到这一点:Cancel button press if user moves finger off button,但是,显示错误prntscr.com/oghnm2,我不知道在哪里以及如何获得 L, R、T、B,getTop()除外;

【问题讨论】:

    标签: java android action android-button ontouchlistener


    【解决方案1】:

    我希望这可能会有所帮助,这里我用 btn 坐标检查了鼠标指针的位置,如果它的位置在打印日志的范围内,否则打印在区域外。

    btn.setOnTouchListener(new View.OnTouchListener() {
               @Override
               public boolean onTouch(View v, MotionEvent event) {
                   if(v.getLeft()<=event.getX() && v.getRight()>=event.getX() && v.getTop()<=event.getY() && v.getBottom()>=event.getY()) {
                       if (event.getAction() == MotionEvent.ACTION_DOWN)
                           Log.d("LOG", "pressed");
                        if (event.getAction() == MotionEvent.ACTION_UP)
                           Log.d("LOG", "released");
                        if (event.getAction() == MotionEvent.ACTION_MOVE)
                           Log.d("LOG", "moving");
                   }
                   else
                   {
                       Log.d("LOG", "out of area");
                   }
                   return false;
               }
           });
    

    【讨论】:

    猜你喜欢
    • 2013-06-09
    • 2017-01-08
    • 2017-08-12
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多