관리 메뉴

moozi

그래픽 2D 6 - ACTION_DOWN 사용하기 본문

안드로이드개발강좌

그래픽 2D 6 - ACTION_DOWN 사용하기

moozi 2010. 3. 16. 16:38

이번 강좌는 지난강좌 [ 안드로이드 개발 2.0 ] 그래픽 2D 5 - 아이콘 여러개 띄우기 에서 이어집니다.

지난 강좌에서 화면을 터치하여 여러개의 아이콘을 띄우는 작업을 해봤습니다.

그런데, 화면을 클릭한 상태에서 드래그 해보면 다음과 같이 드래그한 궤적을 따라 아이콘이 연속적으로 생성되는 것을 볼 수 있습니다.



[ 화살표 방향으로 드래그 할 때 아이콘이 연속적으로 생기는 모습 ]

onTouchEvent 는 화면을 클릭했을 때 뿐만 아니라 화면을 드래그했을 때도 호출되기 때문에 위와 같은 결과가 나옵니다.

이것을 방지 하기 위해서 MotionEvent.ACTION_DOWN 를 사용합니다.
 

1. onTouchEvent 메서드를 다음과 같이 코딩합니다.

 @Override
        public boolean onTouchEvent(MotionEvent event) {
         synchronized (CVThread.getSurfaceHolder()) {
           if (event.getAction() == MotionEvent.ACTION_DOWN){
           GraphicIcon graphic = new GraphicIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icon));
           graphic.getCoordinates().setX((int) event.getX());
           graphic.getCoordinates().setY((int) event.getY());
          graphics.add(graphic);
          }
          return true;
         }
         
        }



2. Ctrl + F11 로 실행합니다.

[ 실행결과 - 화살표방향으로 드래그한 결과 ]


실행해보면 드래그해도 아이콘이 연속적으로 생성되지 않는것을 알 수 있습니다.

[ 참고 - http://www.droidnova.com/playing-with-graphics-in-android-part-iv,182.html ]


4 Comments
  • 프로필사진 solkit 2010.03.18 06:46 안녕하세요?
    강좌 정말 잘 보고 있습니다.

    강좌 따라하다가 제 나름대로 응용하고 있는데요.
    강좌마다 project를 따로 생성하는 것을 저는 한 프로젝트에서 한번 실행해서 모든 예제를 볼 수 있도록 고치고 있습니다.

    start 프로그램을 실행하면 제 임의로 정한 카테고리별로 버튼이 생기고 (예: view,form,graphic,layout,picker) 이 버튼을 누르면 암시적 인텐트로 설정한 그 카테고리 안의 예제 파일들이 나옵니다. 그것을 클릭하면 해당 예제가 Display 되고 각 예제마다 Back 버튼을 두어서 그 버튼을 누르면 finish() 가 실행 되 처음 화면으로 돌아가는걸로 만들었습니다. ^^

    근데 지금까지 강좌를 모두 다 정리를 했는데요.
    한가지 MAPVIEW 을 할 수가 없을 것 같아서 지금 고민입니다.

    MAPVIEW는 Google Api AVD를 프로젝트 생성 단계에서 생성하잖아요?
    처음 start Activity는 이미 Android 2.1로 정해 놨구요.

    1. 이렇게 Android 2.1로 정한 Activity에서 Google APIs를 사용하는 Activity를 인텐트를 써서 호출 할 수 있나요?
    2. 1번이 안 되면 다른 프로젝트에 있는 Activity를 호출하는 방법이 있나요?

    좋은 강좌 항상 감사드리고 있습니다.
    먼곳에서 많은 도움 얻고 있습니다. 감사합니다.
  • 프로필사진 moozi 2010.03.18 10:00 신고 solkit님 안녕하세요?

    이렇게 하면 어떨까요...

    현재까지 작업한 프로젝트를 Google API를 사용해서 만든 AVD를 타겟으로 실행하시고, 이어서 구글맵을 만드시면 될것 같습니다.

    GoogleMap API 로 에뮬을 만들면 사실 Andorid 2.1로 포함되거든요...

    한번 해보시기 바랍니다.

    ^^
  • 프로필사진 안드로메다. 2010.03.18 17:30 안녕하세요. 이 블로그에서 많이 공부하고있습니다.
    여쭤볼게 있는데요.
    혹시 화면을...좌우상하고 드래그 할때마다 아래..화면이 이동하도록 하는 방법은 모가잇을까요?
    즉, lcd보다 큰 화면을 가상으로 놓고...왼쪽으로 드래그 하면 아래 화면이 왼쪽으로 이동하고...하도록요.
    web에서 처럼...실제 그릴수 잇는 방법을 알고싶은데요~!!ㅜㅜ
    힌트를 주시면 감사하겠습니다.
  • 프로필사진 moozi 2010.03.18 18:02 신고 안드로메다님 안녕하세요?

    말씀하신 부분은 제가 잘 모르겠습니다.
    저도 더 공부를 많이 해야겠는데요...

    혹시 나중에 라도 알게되면 이 글 밑에 답변 드릴께요...
댓글쓰기 폼