我有一个带有GridView的Android应用程序。
在该网格中我需要检测很多事件,我必须使用GestureDetector,但有时当我点击网格项时会触发事件onFling
而不是onSingleTapUp
。
我做错了什么?
class GestureDetectorGrid extends SimpleOnGestureListener
{
/**
* Sliding from right to the left to move to another grid
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX,float velocityY)
{
//my code
return false;
}
/**
* Go to another Activity by clicking on a element from the grid.
*/
@Override
public boolean onSingleTapUp(MotionEvent e)
{
//my code
return true;
}
@Override
public void onLongPress(MotionEvent e)
{
//my code
super.onLongPress(e);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY)
{
//my code
return true;
}
@Override
public void onShowPress(MotionEvent e)
{
super.onShowPress(e);
}
@Override
public boolean onDown(MotionEvent e)
{
//my code
return true;
}
}
我的问题与重复不同,因为我想知道为什么Android GestureDetector假设onFling
而不是onSingleTapUp
。或者如果我做错了什么。
答案 0 :(得分:0)
我解决了这个问题:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX,float velocityY) {
int posIni = pointToPosition((int) e1.getX(), (int) e1.getY());
int posFin = pointToPosition((int) e2.getX(), (int) e2.getY());
if( posIni == posFin ) {
//onClick code
}
else {
//onFling code.
}
return true;
}