일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- compose
- Python
- jetpack
- ContentProvider
- 자바set
- 백준파이썬
- 자바리스트정렬
- 파이썬
- 백준
- Kotlin
- 파이썬문법
- 문자열
- android
- 자바
- 배열
- programmers
- Dependency
- Java
- Provider
- disposableeffect
- 자료형
- Hilt
- 프로그래머스
- filternotnull()
- composelifecycle
- nullpointerexception방지
- 리스트
- 티스토리챌린지
- 오블완
- list
Archives
- Today
- Total
study gomi
[Compose] 연속 클릭 동작 composable 본문
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
반응형
'App > Android' 카테고리의 다른 글
[Android/Kotlin] text를 표시하는 floating button (jetpack compose) + button 아래에 하얀색 공백이 보이는 문제 (0) | 2024.10.23 |
---|---|
[Android/Kotlin] expandable + moveable/draggable Floating button (jetpack compose) (3) | 2024.10.23 |
[Android/Kotlin] suspend fun, let vs apply (1) | 2024.10.18 |
[Android] 뒤로가기 막기 (stop + preventing backspace) kotlin (1) | 2024.10.18 |
[Compose] longclick + longclick 안 될 때 (0) | 2024.10.14 |