android 电视设置焦点转换速度

问题描述 投票:0回答:1

我有一个电视应用程序。我在主屏幕上有很多视图。我想设置按住向下按钮时的对焦速度。正常情况下都这么快啊我想减慢视图之间的焦点转换速度。

我怎样才能做到这一点? 预先感谢

android android-studio android-layout android-tv
1个回答
0
投票

您需要添加一个关键的油门实现。这可以使用

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

如果有意义,请随意改进此代码。

© www.soinside.com 2019 - 2024. All rights reserved.