컴포즈에서 클릭, 드래그 같은 사용자 터치 동작을 처리하는 방법에 대한 소개
공식 문서를 기준으로 작성됨
Pointer
Pointer event
Gesture
컴포즈에서는 3가지 레벨로 터치를 처리할 수 있음
높은 레벨이 개발자에서 편한 방법
Top-level
High-level
Low-level
컴포넌트가 제공하는 API
개발자가 따로 처리하지 않아도 동작에 대한 피드백을 받을 수 있음
@Composable
fun Button(
onClick: () -> Unit,
...
)
단점
컴포넌트의 Modifier를 사용한 터치 동작 추가 방법
Modifier가 제공하는 clickable, scrollable, draggable 등이 있음
다음 확장 함수를 제공하는데 내용이 길어 자세한 내용은 다른 글에서 정리할 예정
누르기
스크롤
드래그
다중 터치
터치를 세밀하게 처리해야 하거나 원하는 동작을 만들어야 할 때 사용
Modifier의 pointerInput 안에서 awaitPointerEventScope를 사용
이 부분도 내용이 길어져 다른 글에서 자세히 다룰 예정
Modifier
.pointerInput(Unit) {
awaitPointerEventScope {
val touchDown = awaitPointerEvent()
do {
val touchMove = awaitointerEvent()
} while (touchMove.changes.any { it.pressed })
val touchUp = awaitPointerEvent()
}
}
단점
그래서 컴포즈는 여러 동작을 몇 가지 메소드를 제공하고 있음
누르기
드래그
다중 터치