在安卓设备中移动手指时找到正确的方向

Posted

技术标签:

【中文标题】在安卓设备中移动手指时找到正确的方向【英文标题】:finding the right direction while moving your finger in android devices 【发布时间】:2015-08-05 14:39:17 【问题描述】:

我目前正在 android 上处理移动,我使用了MotionEvent.ACTION_MOVE

我计算currentx =(int) event.getX()/sizecurrenty=event.gety()/size,这给了我基于我工作的网格大小的整数。但是,我想要一种方法来查找当前 y 在移动时发生变化的位置,并决定在那之后做一些事情。

例如,如果大小等于10,那么在x=150y=150 我的currentx 将是15currenty 将是15 但当currenty 更改为类似16 的意思是150<event.get(y)<160。我想知道我在向下的方向等等。

【问题讨论】:

请向我们提供您的代码的工作示例。到目前为止,您的问题太模糊,无法回答 我在这里复制一个示例代码,因为上面的描述不够清楚。 【参考方案1】:
public boolean onTouchEvent(MotionEvent event) 
//mGestureDetector.onTouchEvent(event);

int action = event.getActionMasked();

switch (action) 

    case MotionEvent.ACTION_DOWN:
        initialX = event.getX();
        initialY = event.getY();

        Log.d(TAG, "Action was DOWN");
        break;

    case MotionEvent.ACTION_MOVE:
        Log.d(TAG, "Action was MOVE");
        break;

    case MotionEvent.ACTION_UP:
        float finalX = event.getX();
        float finalY = event.getY();

        Log.d(TAG, "Action was UP");

        if (initialX < finalX) 
            Log.d(TAG, "Left to Right swipe performed");
        

        if (initialX > finalX) 
            Log.d(TAG, "Right to Left swipe performed");
        

        if (initialY < finalY) 
            Log.d(TAG, "Up to Down swipe performed");
        

        if (initialY > finalY) 
            Log.d(TAG, "Down to Up swipe performed");
        

        break;

    case MotionEvent.ACTION_CANCEL:
        Log.d(TAG,"Action was CANCEL");
        break;

    case MotionEvent.ACTION_OUTSIDE:
        Log.d(TAG, "Movement occurred outside bounds of current screen element");
        break;


return super.onTouchEvent(event);
  

这是我的代码

private int getDirection(float startx, float starty,float endx ,float endy )


int direction=-1;

    startx = (((int) startx / _size) *_size) ;
    starty = (((int) starty / _size) * _size) ;
    endx = (((int) endx / _size) * _size) ;
    endy = (((int) endy / _size) * _size) ;


  //  Log.i("direction","startx:"+startx+"endx:"+endx+"starty: "+starty+"endy: "+endy+" ");


    if (starty==endy)
    
        direction= 0;

        return direction;

    
    if(startx==endx)
    
        direction =1;
       return direction;
    

    if(Math.abs(startx-endx)==Math.abs(starty-endy))
    

        direction =2;
       return direction;



    



    else 
    
        direction =-1;
    return direction;
    







所以我可以找到我在这两个坐标中的水平或垂直或非,但我需要一种方法来比较以前和当前的方向,同时在行动中。移动一些像 onDirectionChanggeListener 这样的东西 我可以使用 action_up,但在移动操作中我需要它。

【讨论】:

以上是关于在安卓设备中移动手指时找到正确的方向的主要内容,如果未能解决你的问题,请参考以下文章

移动端 uni-app 滑动事件 精确判断手指滑动方向

如何通过触摸在屏幕上拖动手指来移动 3D 对象

Opengl es Android 3D 手指触控旋转object

移动端判断用户滑动方向

移动方向更改未应用 CSS

如何在不抬起手指的情况下更改我按下的按钮? (在LibGDX中)