private lateinit var handler: Handler
private lateinit var runnable: Runnable
private val holdTime = 5000L
OnLongClickListener 에는 시간을 조절할 수 있는 기능이 없었다.
그래서 setOnTouchListener 로 구현해주었다.
안드로이드의 메시지 큐와 스레드 간의 통신을 관리하는 도구.
지연된 작업을 실행시키기 위해 사용한다.
Runnable을 사용하여 그 작업을 정의하고, Handler를 통해 지연된 실행을 예약.
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
}