2012-11-25 4 views
2

현재 내 기본 드로잉 앱을 만들고 있습니다. 지금까지는 앱이 잘 작동했지만 모션 이벤트가 터치 된 모든 X 축 및 Y 축 점을 얻지 못하는 것으로 나타났습니다.안드로이드의 모션 이벤트에서 모든 x 및 y 좌표 얻기

화면에서 손가락을 움직이면 원 사이에 눈에 띄는 공백이 생깁니다. 손가락을 천천히 움직여야 만 모든 지점을 포착 할 수 있습니다. 모든 포인트를 잡을 수있는 방법이 있습니까 아니면 모든 포인트를 처리 할 수 ​​있도록 최적화 할 수있는 방법이 있습니까? 여기

내가 그것을하고있어 방법은 다음과 같습니다

setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 

       int x; 
      int y;  

      switch (event.getAction()) 
      { 
       case MotionEvent.ACTION_DOWN: 
       { 
        x = (int) event.getX(); 
        y = (int) event.getY(); 
        //method draws circle at x and y coordinate 
        MyPainter mp = new MyPainter(x,y); 

        break; 
       } 
       case MotionEvent.ACTION_MOVE: 
       { 
        x = (int) event.getX(); 
        y = (int) event.getY(); 
       MyPainter mp = new MyPainter(x,y); 

        break; 
       } 
      } 
      return true; 

     } 
    }); 

어떤 제안이나 의견을 부탁드립니다. 감사합니다.

답변

2

이것은 하드웨어 설계 방법입니다. 하드웨어는 터치 스크린을 초당 N 번 샘플링하고 손가락을 감지 할 때마다 좌표를 뱉어 낸다.

화면 샘플보다 빠르게 이동하면보고 된 데이터에 간격이 생깁니다. 당신이 할 수있는 일은 누락 된 점들을 두 개의 터치 사이에서 선을 따라 보간하여 스스로 생성하는 것입니다.

+1

나는 표면을 들여다 보았다. 이게 내 문제를 해결할 수 있을까? – user818502

1

허용 대답 엄격 정확한 것이 아니라, 다음 방법을 사용하여 graps에서 터치 데이터에 액세스 할 수있다 :

event.getHistorySize(); // returns the number of data points stored as an int 
event.getHistoricalX(int); 
event.getHistoricalX(int); 

다른 관련 방법은 다수의 포인터가있을 때 가능을 (documentation 참조) .

이것이 실제로 어떻게 사용될 수 있는지에 대한 좋은 예는 here입니다.

관련 문제