【问题标题】:"Live" get(x) and get(Y) values (for MotionEvents) ****UPDATE****“实时” get(x) 和 get(Y) 值(用于 MotionEvents)****更新****
【发布时间】:2011-09-22 19:42:45
【问题描述】:

我想知道如何为 MotionEvent 获取准确、实时的 get(x) 和 get(y) 值?正在发生的事情是,当我触摸屏幕上的特定区域时,我会告诉一个动作发生。 问题是,一旦我触摸屏幕并松开手指,它仍然认为我的手指在同一个位置(因为那是我最后触摸的位置)。因此,当我有多个 Down 事件(用于多点触控)时,它会抛出所有问题。有没有办法重置 X 和 Y 值,所以当我离开屏幕时,它们会回到 0 或 null(或其他)?谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    您所描述的不是问题。程序员负责跟踪触摸位置及其含义。如果您关心运动,则需要在每次触摸发生时跟踪上一次触摸和当前触摸。我发现这样的东西很好用:

    public int x=-1,y=-1,prevX=-1, prevY=-1;
    
    public boolean onTouch(View v, MotionEvent event)
    {
        prevX = x;
        prevY = y;      
        int x = (int)event.getX();  
        int y = (int)event.getY();
    
        switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:
    
            // there is no prev touch
            prevX = -1;
            prevY = -1;
    
            // touch down code
    
            break;
    
        case MotionEvent.ACTION_MOVE:
            // touch move code
            break;
    
        case MotionEvent.ACTION_UP:
            // touch up code
            break;
        }
        return true;
    }
    

    【讨论】:

      【解决方案2】:

      只需捕获 MotionEvent.ACTION_UP 或 ACTION_MOVE 事件,具体取决于动作需要何时发生(因为您希望它生效,您应该使用 ACTION_MOVE 事件)。您应该在 ACTION_DOWN 发生时处理设置外部变量,并在 ACTION_MOVE 或 ACTION_UP 上处理结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 1970-01-01
        • 2018-12-27
        • 2016-07-08
        • 2012-05-04
        相关资源
        最近更新 更多