ExoPlayer: Как определить, отображаются ли элементы управления?

Я использую ExoPlayer для приложения для Android и хочу переключать видимость элементов управления.

я вижу это PlayerView имеет showController() метод и hideController() метод, но нет toggleController() метод.

Очевидно, я могу реализовать toggleController() сам, но как мне узнать, видны ли элементы управления? Я указываю пользовательский макет контроллера примерно так:

<com.google.android.exoplayer2.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:controller_layout_id="@layout/exo_controls" />

и мне нужно выяснить такую ​​функцию (например, в Kotlin):

fun toggleController() {
    val playerView = findViewById<PlayerView>(R.id.player_view)
    val controlsVisible = // ???
    if (controlsVisible) {
        playerView.hideController()
    } else {
        playerView.showController()
    }
}

2 ответа

Все, что вам нужно сделать, это вызвать isControllerVisible() в вашем PlayerView:

            if (mPlayerView.isControllerVisible()) {
                // Do something if controls are visible
                return true;
            } else {
                // Do something else if controls are not showing
                return false;
            }

Вы можете просто сохранить видимость элементов управления и изменять их каждый раз, когда элементы управления скрыты или показаны. Вы, вероятно, захотите ограничить скорость переключения, чтобы избежать двойных проблем с анимацией.

Другие вопросы по тегам