我想通过鼠标单击来检测模拟器上的手势事件,应该如何工作?我尝试过双击(我期望生成一个onDoubleTap),单击(我希望生成一个onSingleTapConfirmed),拖动(希望生成一个onScroll),但是这些都会产生相同的三个事件: onDown,onShowPress,onLongPress。在Android上,手势事件在模拟器上工作吗?
是否有一种特殊的方式,鼠标点击/拖动必须在模拟器上产生手势事件?或者是有什么毛病下面的代码,我使用的检测事件:
public class GestureEnabledImageView extends ImageView implements OnGestureListener, OnDoubleTapListener
{
private GestureDetector gestureScanner;
public GestureEnabledImageView(Context context)
{
super(context);
gestureScanner = new GestureDetector(this);
gestureScanner.setOnDoubleTapListener(this);
}
public GestureEnabledImageView(Context context, AttributeSet atts)
{
super(context, atts);
gestureScanner = new GestureDetector(this);
gestureScanner.setOnDoubleTapListener(this);
}
public GestureEnabledImageView(Context context, AttributeSet atts, int style)
{
super(context, atts, style);
gestureScanner = new GestureDetector(this);
gestureScanner.setOnDoubleTapListener(this);
}
@Override
public boolean onTouchEvent(MotionEvent me)
{
return gestureScanner.onTouchEvent(me);
}
@Override
public boolean onDown(MotionEvent e)
{
log("onDown: " + e.getRawX() + ", " +e.getRawY());
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
log("onFling: " + e1.getX() + ", " + e1.getY() + " -- " + e2.getX() + ", " + e2.getY() + " -- " + velocityX + " -- " + velocityY);
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
log("onLongPress: " + e.getRawX() + ", " +e.getRawY());
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
log("onScroll: " + e1.getX() + ", " + e1.getY() + " -- " + e2.getX() + ", " + e2.getY() + " -- " + distanceX + " -- " + distanceY);
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
// TODO Auto-generated method stub
log("onShowPress: " + e.getRawX() + ", " +e.getRawY());
System.out.println();
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
log("onSingleTapUp: " + e.getRawX() + ", " +e.getRawY());
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e)
{
log("onDoubleTap: " + e.getRawX() + ", " +e.getRawY());
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e)
{
log("onDoubleTapEvent: " + e.getRawX() + ", " +e.getRawY());
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e)
{
log("onSingleTapConfirmed: " + e.getRawX() + ", " +e.getRawY());
// TODO Auto-generated method stub
return false;
}
private void log(String text)
{
Log.i("MyInfo", text);
}
}