2010-03-15 5 views

답변

28

:-) 나를 위해 큰 무엇이다 사용자 입력을 제대로 처리해야합니다. onTouchEvent 메서드는 사용자가 손가락을 내려 놓거나 이미 손가락을 화면 위로 움직이거나 손가락을 올 때마다 호출됩니다. 이벤트가 손가락이있는 곳의 X 및 Y 좌표를 전달할 때마다. 예를 들어 비트 맵 내부를 두드리는 사람을 확인하려면 ACTION_DOWN에서 비트 맵 내부에서 터치가 시작되었다는 부울 값을 설정 한 다음 ACTION_UP이 비트 맵 내부에 있는지 확인해야합니다.

+0

의 터치에 코드입니다. 그걸 도와 줄 수있어? –

+0

비트 맵을 캔버스에 그리는 경우,'canvas.drawBitmap' 메쏘드의 인자로 넘겨야하므로 X와 Y 값을 이미 알고 있어야합니다. –

3

스티브, 구글은 http://developer.android.com/guide/topics/ui/ui-events.html @ UI 이벤트를 처리하기위한 좋은 기사와 튜토리얼이 있습니다. 시작은, 그러나 당신이 case MotionEvent.ACTION_MOVE을 처리하기 위해 필요 case MotionEvent.ACTION_UP

public boolean onTouchEvent(MotionEvent event){ 
    int action = event.getAction(); 
    int x = event.getX() // or getRawX(); 
    int y = event.getY(); 

    switch(action){ 
    case MotionEvent.ACTION_DOWN: 
     if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth()) 
       && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) { 
      //tada, if this is true, you've started your click inside your bitmap 
     } 
     break; 
    } 
} 

확실히 당신을 위해이 날을 시작했고, 그것은 당신과 같이 뭔가 작업을해야

0

터치를 감지하고 투명하지 않은지 확인합니다. 비트 맵이 직사각형이 아닌 경우이 옵션이 필요합니다. myBitmap은 내가 사용하는 단순한 컨테이너 클래스이다.

private boolean clickOnBitmap(MyBitmap myBitmap, MotionEvent event) { 
    float xEnd = myBitmap.originX() + myBitmap.width(); 
    float yEnd = myBitmap.originY() + myBitmap.height();; 


    if ((event.getX() >= myBitmap.originX() && event.getX() <= xEnd) 
    && (event.getY() >= myBitmap.originY() && event.getY() <= yEnd)) { 
     int pixX = (int) (event.getX() - myBitmap.originX()); 
     int pixY = (int) (event.getY() - myBitmap.originY()); 
     if (!(myBitmap.getBitmap().getPixel(pixX, pixY) == 0)) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
    return false; 
} 

이 완벽

내가 코드를 사용하고 싶지만 비트 맵의 ​​x와 y를 얻는 방법에 대해 궁금해
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      if (clickOnBitmap(dog, event)) { 
       Toast.makeText(getContext(), "dog", Toast.LENGTH_SHORT).show(); 
      } else if (clickOnBitmap(mouse,event)) { 
       Toast.makeText(getContext(), "mouse", Toast.LENGTH_SHORT).show(); 
      } 
     return true; 
     case MotionEvent.ACTION_OUTSIDE: 
     case MotionEvent.ACTION_UP: 
     case MotionEvent.ACTION_CANCEL: 
      return true; 
    } 
    return false; 
} 
관련 문제