我有一个电视应用程序。我在主屏幕上有很多视图。我想设置按住向下按钮时的对焦速度。正常情况下都这么快啊我想减慢视图之间的焦点转换速度。
我怎样才能做到这一点? 预先感谢
您需要添加一个关键的油门实现。这可以使用
setOnKeyInterceptListener
来完成。假设您正在使用 verticalGridView
(或任何其他带有添加拦截器选项的 Leanback viewGroup)的场景:
private fun setKeyInputThrottle() {
verticalGridView?.setOnKeyInterceptListener { keyEvent ->
val systemTime = System.currentTimeMillis()
when {
keyEvent.action == KeyEvent.ACTION_UP -> {
keyLastInputTimestamp = null
false
}
keyLastInputTimestamp == null -> {
keyLastInputTimestamp = systemTime
false
}
keyLastInputTimestamp != null &&
systemTime - keyLastInputTimestamp!! > KEY_THROTTLE_TIME_MILLIS -> {
keyLastInputTimestamp = systemTime
false
}
else -> true
}
}
}
这将与本地时间戳实例和您可以设置的常量 Throttle 一起使用。目前我的最佳配置:
companion object {
const val KEY_THROTTLE_TIME_MILLIS = 100L
}
private var keyLastInputTimestamp: Long? = null
如果有意义,请随意改进此代码。