android - 如何设置点击计时器?

标签 android kotlin motionevent

想要将计时器设置为1分钟,如果没有点击,请调用我的方法viewContract.lockScreen()
这是我的代码:

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    viewContract.lockScreen()
    return super.dispatchTouchEvent(ev)
}

最佳答案

我会像这样对postDelayed(...)进行Handler:

val handler = Handler(Looper.getMainLooper())
val timerDuration = TimeUnit.MINUTES.toMillis(1)
val timerAction = Runnable { /* call your method here... */ }

fun startTimer() =  handler.postDelayed(timerAction, timerDuration)
fun cancelTimer() = handler.removeCallbacks(timerAction)

编辑:

这个问题有点不清楚,因为您声明希望在经过1分钟之后没有交互就执行viewContract.lockScreen(),但是随后您在dispatchTouchEvent中调用了发生触摸的相同方法。但是正如我所看到的,这就是您应该如何称呼它:
val handler = Handler(Looper.getMainLooper())
val timerDuration = TimeUnit.MINUTES.toMillis(1)
val timerAction = Runnable { viewContract.lockScreen() }

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    cancelTimer()
    return super.dispatchTouchEvent(ev)
}

fun startTimer() =  handler.postDelayed(timerAction, timerDuration)
fun cancelTimer() = handler.removeCallbacks(timerAction)

同样也不清楚计时器应该何时启动,但是无论如何,只要应在发生这种情况时调用startTimer()即可。

关于android - 如何设置点击计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088451/

相关文章:

android - 将 JSONArray 转换为通用类型列表的函数

android:如何检测用户何时触摸左侧 20% 的 View 区域?

Android:MotionEvent.obtain 与 webview 不工作

android - 是否可以生成javadoc,其中在新选项卡中打开了指向特定URL的链接?

android - 了解 iphone 和 android 中的 HTML 字体大小差异

kotlin - 按 n 个条件对集合进行分组

Android:使用按钮放大缩小 ImageView(没有 MotionEvent)

android - 在语音通话中使用文字转语音

java - Math.pow 奇怪的结果

java - RecyclerView ListAdapter不显示特定项目