Android LongClick 시간 조절

이성은·2024년 9월 2일
0
post-custom-banner
private lateinit var handler: Handler
private lateinit var runnable: Runnable
private val holdTime = 5000L

OnLongClickListener 에는 시간을 조절할 수 있는 기능이 없었다.
그래서 setOnTouchListener 로 구현해주었다.

Handler

안드로이드의 메시지 큐와 스레드 간의 통신을 관리하는 도구.
지연된 작업을 실행시키기 위해 사용한다.

Runnable

Runnable을 사용하여 그 작업을 정의하고, Handler를 통해 지연된 실행을 예약.

holdTime

5초동안 홀드하고 있게 설정.
10초 -> 10000L

handler = Handler(Looper.getMainLooper())
        val button = overlayView.findViewById<Button>(R.id.lock_button)

        button.setOnTouchListener { _, event ->
            when (event.action) {
                MotionEvent.ACTION_DOWN -> {
                    runnable = Runnable {
                        Log.d(Constant.TAG, "Overlay onCreate: longClick checked")
                        // 홀드가 끝난 후, 실행할 로직 구현
                    }
                    handler.postDelayed(runnable, holdTime)
                }
                MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
                	// 중간에 홀드가 끊겼을 경우, 로직 구현
                    handler.removeCallbacks(runnable)
                }
            }
            true
        }
profile
문제를 해결하는 개발자
post-custom-banner

0개의 댓글