在安卓设备中移动手指时找到正确的方向
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()/size
和currenty=event.gety()/size
,这给了我基于我工作的网格大小的整数。但是,我想要一种方法来查找当前 y
在移动时发生变化的位置,并决定在那之后做一些事情。
例如,如果大小等于10
,那么在x=150
和y=150
我的currentx
将是15
和currenty
将是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,但在移动操作中我需要它。
【讨论】:
以上是关于在安卓设备中移动手指时找到正确的方向的主要内容,如果未能解决你的问题,请参考以下文章