App/Android
[Compose] 연속 클릭 동작 composable
공부하곰
2024. 10. 14. 12:45
728x90
반응형
일반적으로 쓰는 OnClickCountListener 참고
[Android/Kotlin] 일정 횟수 클릭 시 이벤트 (5번 연속 터치)
💌 [Android/Kotlin] 일정 횟수 클릭 시 이벤트 (5번 연속 터치) 안드로이드 설정에서 빌드번호를 연타하면 개발자 모드를 진입 하듯이, 나도 어떤 히든 부분을 몇초안에 일정 횟수를 연타 했을 때 관
velog.io
Compose에서 View가 없기 때문에 그대로 사용하기는 어렵다.
클릭 수를 추적할 수 있도록 remember와 LaunchedEffect를 사용해 Compose 환경에서 더 적합하게 변경해야 함.
1. ClickCount 5번 / 5번 연속 클릭 감지하는 composable
@Composable
fun rememberClickCount(
onCountClick: () -> Unit,
targetCount: Int = 5,
intervalMillis: Long = 1000L
): (()-> Unit) {
var clickCount by remember { mutableStateOf(0) }
var lastClickedTime by remember { mutableStateOf(0L) }
return {
val currentTime = System.currentTimeMillis()
if (currentTime - lastClickedTime < intervalMillis) {
clickCount++
} else {
clickCount = 1
}
lastClickedTime = currentTime
if (clickCount >= targetCount) {
onCountClick()
clickCount = 0
}
}
}
2. 사용 예시
@Composable
private fun MyCompose() {
val onTextClick = rememberClickCount(
onCountClick = { Timber.i("Text clicked 5 times!") } // 로그 출력
)
Text(
text = "text 값 ..",
modifier = Modifier.clickable {
onTextClick()
}
)
}
- 일단은 로그를 출력하게끔 해뒀다.
728x90
반응형