일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Engineer Australia
- Android
- nginx
- first flutter app
- 블러 효과
- flutter progress dialog
- HTML 게임 엔진
- flutter
- 회전판
- PowerMockup
- game engine
- 기술인증
- quintus
- OpenGL
- BlurDrawable
- c
- StatelessWidget
- 플러터
- reverse proxy
- c++
- 앱 기획
- 공학인증
- StatefulWidget
- 맨붕
- progress
- 호주 이민
- ABEEK
- first_app
- rotate circle
- ipad
Archives
- Today
- Total
우동우동우's note
Disallow Intercept Touch Event 본문
간혹 가다가 세로 스크롤과 가로 스크롤이 동시에 나와야하는 뷰들이 있다. 이러한 상화에서는 상위 뷰에 터치 인터셉트를 하지말라고 요청해야 한다.
요청 방법은 간단한다.
View.OnTouchListener에 다음의 코드를 넣으면 된다.
parent에 requestDisallowInterceptTouchEvent()함수를 불러와서 parent 뷰에게 스크롤을 멈추게 하는 것이다.
@Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // Disallow ScrollView to intercept touch events. v.getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: // Allow ScrollView to intercept touch events. v.getParent().requestDisallowInterceptTouchEvent(false); break; } return v.onTouchEvent(event); }
위 코드는 아주 간단하게 작성이 된 것이라 특정 뷰를 클릭했을 때 parent의 스크롤 기능이 먹통이 되게 된다. 만약 먹통이 되는 것을 막고 싶다면 스크롤 방향에 대해서 detection을 해야하고, 그때 requestDisallowInterceptTouchEvent()를 풀어주고, 처음에 선택된 뷰의 위치를 다시 지정하고, 등등의 여러 수고가 필요하다...
나중에 한번 시도 해봐야지...
'Java & Android' 카테고리의 다른 글
[Android] Memory Check (0) | 2013.11.13 |
---|---|
[Android] catch 하지 않은 Exception 발생시 파일로 로그 저장하기 (0) | 2013.03.26 |
Android Sectioned ListView (2) | 2013.02.08 |
[Android] Fragment 안에 MapView 넣기 (2) | 2012.08.08 |
[Android] Caused by: java.lang.ClassNotFoundException: com.google.android.maps.MapView (0) | 2012.08.07 |
Comments