안드로이드 개발 질문/답변
(글 수 45,052)
먼저 그냥가자님 답변해주셔서 감사드립니다.
아래와 같이 두가지 방식을 제안해 주셨는데요.
테스트를 하던 중에 궁금한게 더 생겨서요.
1. 제스쳐 사용
- onTouchEvent()를 오버라이드해서 제스쳐(onFling()사용)를 인식을 하는데요.
리스트에서 상/하 스크롤 이벤트가 먹히질 않습니다.
2. 커스텀리스트뷰에서 dispatchTouchEvent() 사용
- 이경우는 1번처럼 리스트 상/하 스크롤이 먹지 않는 문제는 해결되지만
처음 down좌표와 마지막 up좌표를 얻을 수 없어서 좌우스크롤판단을 내릴수가 없습니다.
어렵네요~~알려줘도 못하는 바보가 된 느낌입니다.
해결을 봤으면 좋겠는데 쉽지않네요~
다시한번 조언을 주시면 너무너무너무 고마울거 같아여~~
1. 제스쳐 사용 소스 private GestureDetector mGestures = null; mGestures = new GestureDetector(new GestureDetector.SimpleOnGestureListener(){
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub System.out.println(">>>>>>>>>>>>>>>>>> onFling()!! <<<<<<<<<<<<<<<<"); return super.onFling(e1, e2, velocityX, velocityY); } }); @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if(mGestures != null){ System.out.println(">>>>>>>>>>>>>>>>>> mGesture True !! <<<<<<<<<<<<<<<<"); return mGestures.onTouchEvent(event); }else{ System.out.println(">>>>>>>>>>>>>>>>>> mGesture False !! <<<<<<<<<<<<<<<<"); return super.onTouchEvent(event); } } ================================================================================== 2. dispatchTouchEvent() 사용 소스 @Override public boolean dispatchTouchEvent(MotionEvent event) { // TODO Auto-generated method stub System.out.println(">>>>>>>>>>>>>>>> dispatchTouchEvent <<<<<<<<<<<<<<<< "); if(mGestures != null){ System.out.println(">>>>>>>>>>>>>>>>>> mGesture True !! <<<<<<<<<<<<<<<<"); return mGestures.onTouchEvent(event); }else{ System.out.println(">>>>>>>>>>>>>>>>>> mGesture False !! <<<<<<<<<<<<<<<<"); return super.dispatchTouchEvent(event); }
2010.10.08 17:36:41
그냥가자님 감사드립니다. ^^
저는 ViewFlipper를 이용하여 뷰전환이 되도록 하였구요~
이 뷰들을 전환을 드래그를 통해 하였을 때 ACTION_DOWN, ACTION_UP의 좌표값을 받아서 뷰전환을 하였습니다.
저는 ViewFlipper를 이용하여 뷰전환이 되도록 하였구요~
이 뷰들을 전환을 드래그를 통해 하였을 때 ACTION_DOWN, ACTION_UP의 좌표값을 받아서 뷰전환을 하였습니다.
@Override public boolean dispatchTouchEvent(MotionEvent event) { // TODO Auto-generated method stub switch(event.getAction()){ // 다운시 x좌표 저장 case MotionEvent.ACTION_DOWN: firstX = event.getX(); break; // 업시 x좌표 저장 case MotionEvent.ACTION_UP: lastX = event.getX(); if(Math.abs(firstX - lastX) > 70){ // ViewFlipper를 이용해서 뷰전환되는 메서드 changeView(this, firstX, lastX); return true; } break; } return super.dispatchTouchEvent(event); }
보면 아실겁니다. 어떻게 했는지...