我想通過鼠標單擊來檢測模擬器上的手勢事件,應該如何工作?我嘗試過雙擊(我期望生成一個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);
}
}