onTouchEvent执行两次

sly*_*oty 19 android android-event

任何人都可以向我解释为什么onTouchEvent执行两次,我怎么能设置它只运行一次?我找不到解释.谢谢.

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    _iv = new ImageView(this);

    _map = BitmapFactory.decodeResource(getResources(), R.drawable.image);

        _iv.setImageBitmap(_map);
        _iv.invalidate();

    setContentView(_iv);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    double X = event.getX();
    double Y = event.getY();

    Toast.makeText(this, "X: " + X + " Y: " + Y, Toast.LENGTH_SHORT).show();

    return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

Dee*_*eeV 37

它针对每个事件执行.在这种情况下,它将是ACTION_DOWNACTION_UP事件.它也将ACTION_MOVE多次执行该事件.

要让它只在一个事件中执行,请执行以下操作:

switch(event.getAction())
{
  case MotionEvent.ACTION_DOWN:
    ** CODE ** 
    break;
  case MotionEvent.ACTION_MOVE:
    ** CODE ** 
    break;
  case MotionEvent.ACTION_UP:
    ** CODE **
    break;
}
Run Code Online (Sandbox Code Playgroud)

  • Android通常级联onTouchEvents向下视图,直到其中一个返回"true".如果您的触摸事件已经完全处理并且应该停止,则返回"true". (4认同)