Как скрыть все из ExoPlayer2? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь заменить представление ExoPlayer2 на ImageView, если файл мультимедиа недоступен.

    if(stepVideo != null) {
        mPlaceHolderIv.setVisibility(View.GONE);
        exoPlayerView.setVisibility(View.VISIBLE);
        initializePlayer(Uri.parse(stepVideo));
        //initialize MediaSession
        initializeMediaSession();
    } else if(stepThumbUrl != null) {
        mPlaceHolderIv.setVisibility(View.GONE);
        exoPlayerView.setVisibility(View.VISIBLE);
        initializePlayer(Uri.parse(stepThumbUrl));
        //initialize MediaSession
        initializeMediaSession();
    } else {
        exoPlayerView.setVisibility(View.GONE);
        releasePlayer();
        mPlaceHolderIv.setVisibility(View.VISIBLE);
        Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(mPlaceHolderIv);
    }

Я знаю, что вызывается else, потому что показывается изображение заполнителя;однако элементы управления воспроизведением все еще видны.Я перепробовал все ответы здесь , но все равно отображается контрольный вид (воспроизведение, пауза и т. Д.).Есть идеи?

Примечание. Я перезаписал пользовательские элементы управления файлом, помеченным как exo_playback_control_view.xml.

Редактировать: Исправлена ​​проблема с отображением элементов управления, когда просмотр был УХОДЕН, но возникает новый вопрос: почемуxml для SimpleExoPlayerView должен иметь app:use_controller="false", а затем установить его в true в java при инициализации и снова в false при выпуске?Почему управляющее представление не исчезает вместе с остальной частью SimpleExoPlayerView?

1 Ответ

0 голосов
/ 26 июня 2018

Не уверен, что это может помочь, но если вы просто хотите заменить представление другим, почему бы не использовать ViewSwitcher или ViewAnimator?

2 дочерних представления (заполнитель и представление / макет проигрывателя)те, между которыми вы переключаетесь, и вы вызываете showNext, чтобы переключиться на другое представление.

Вы также можете использовать эти полезные вспомогательные функции:

fun ViewAnimator.setViewToSwitchTo(viewToSwitchTo: View, animate: Boolean = true): Boolean {
    if (currentView === viewToSwitchTo)
        return false
    for (i in 0 until childCount) {
        if (getChildAt(i) !== viewToSwitchTo)
            continue
        if (animate)
            displayedChild = i
        else {
            val outAnimation = this.outAnimation
            val inAnimation = this.inAnimation
            this.inAnimation = null
            this.outAnimation = null
            displayedChild = i
            this.inAnimation = inAnimation
            this.outAnimation = outAnimation
        }
        return true
    }
    return false
}

fun ViewAnimator.setViewToSwitchTo(@IdRes viewIdToSwitchTo: Int, animate: Boolean = true): Boolean {
    if (currentView.id == viewIdToSwitchTo)
        return false
    for (i in 0 until childCount) {
        if (getChildAt(i).id != viewIdToSwitchTo)
            continue
        if (animate)
            displayedChild = i
        else {
            val outAnimation = this.outAnimation
            val inAnimation = this.inAnimation
            this.inAnimation = null
            this.outAnimation = null
            displayedChild = i
            this.inAnimation = inAnimation
            this.outAnimation = outAnimation
        }
        return true
    }
    return false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...