티스토리 뷰


개발을 진행 하던 중 OnTouchListener를 사용 하여 터치 발생 시 특정 이벤트를 처리 하는 코드를 구현 하여 사용 하던 중 

view 되는 항목이 늘어나 ScrollView를 사용 하여 Layout을 감싸 사용을 하였더니 ScrollView 사용으로 인해 화면을 스크롤링(scrolling) 하면OnTouchListener가 콜백 되어 의도하지 않았던 이벤트가 발생 되는 문제가 발생 되었습니다.


OnTouchListener는 터치시에만 이벤트가 발생되고 스크롤링을 할때는 해당 이벤트를 미처리 해야 경우가 발생 하였습니다.

그래서 아래의 코드와 같이 OnTouchListener에서 시간 간격을 체크 하여 스크롤링 될때에는 이벤트가 발생 되지 않도록 하는 코드를 사용 하여 해결 하였습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
testView.setOnTouchListener(new OnTouchListener() {
 private static final int MAX_CLICK_DURATION = 200;
 private long startClickTime;
 @Override
 public boolean onTouch(View v, MotionEvent event) {
  switch (event.getAction()) {
   case MotionEvent.ACTION_DOWN: {
    startClickTime = Calendar.getInstance().getTimeInMillis();
    break;
   }
   case MotionEvent.ACTION_UP: {
    long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
    if(clickDuration < MAX_CLICK_DURATION){
     //터치 시 이벤트 코드 
    }
   }
  }
  return true;
 }
});
cs


댓글