【问题标题】: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。我想知道我在向下的方向等等。

【问题讨论】:

  • 请向我们提供您的代码的工作示例。到目前为止,您的问题太模糊,无法回答
  • 我在这里复制一个示例代码,因为上面的描述不够清楚。

标签: android motion-detection motionevent


【解决方案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,但在移动操作中我需要它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多