Изменение ориентации вида и превращение его в полноэкранный режим

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

Я хочу переключить ориентацию этого videoView и растянуть его, чтобы сделать его полноэкранным.

Вот что я пробовал;

((ViewManager)VideoView.getParent()).removeView(VideoView);
frameLayout.addView(VideoView); 
  • Я обернул свой макет с помощью Frame Layout
  • Я удалил свой «VideoView» и добавил его в макет кадра.

Я только что добился результата, но в этом случае видео останавливается. Как будто все VideoView стало бесполезным. Когда я удаляю его, он пытается отправить сообщение обработчику в мертвом потоке и перестает работать.

Мой вопрос,

Есть ли способ изменить родителя представления, не удаляя его? или есть ли лучший вариант сделать это представление полноэкранным?

Примечание. Тип этого VideoView — Exo Media Video View, я использовал библиотеку ниже https://github.com/brianwernick/ExoMedia


person Erdi İzgi    schedule 18.08.2016    source источник
comment
это может быть полезно, вы также должны быть заинтересованы в изменении темы (помимо ориентации ) Theme.NotTitleBar.Fullscreen. ознакомьтесь также с совместимостью приложений для получения более плавных решений, которые возможны только в более новой части доли рынка Android-версии.   -  person snachmsm    schedule 18.08.2016
comment
@snachmsm одна из проблем исчезает. Теперь мне нужно позаботиться о создании полноэкранной части.   -  person Erdi İzgi    schedule 18.08.2016
comment
см. редактирование :) просто погуглите... как-установить-размер-экрана-на-полноэкранный-во-времени-на-Android   -  person snachmsm    schedule 18.08.2016
comment
@snachmsm хорошо, я пробовал это раньше. Это делает весь макет полноэкранным, а не вид. Я хочу, чтобы только один вид был виден и растянут на экране. Но все равно спасибо.   -  person Erdi İzgi    schedule 18.08.2016
comment
поэтому просто используйте Animations и Transitions. проверьте это, но обратите внимание, что это только для более новых API...   -  person snachmsm    schedule 18.08.2016
comment
Мне нужно поддерживать 4.1+, я работаю над другой идеей, например, убрать все остальные представления. Так как останется только плеер и естественно вытянется.   -  person Erdi İzgi    schedule 18.08.2016


Ответы (1)


Ну, подумав об этом, я нашел рабочее решение.

  • Уберите все остальные виды
  • скрыть строку состояния

в основном я написал эту функциональную структуру

    private void goFullScreen() {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        makeAllGone();
    }

    private void outFullScreen(){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        makeAllVisible();
    }

    private void makeAllGone(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        toolbar.setVisibility(View.GONE);
        // make visibility gone for the rest of the views

    }

    private void makeAllVisible(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        toolbar.setVisibility(View.VISIBLE);
        // make visibility visible for the rest of the view
    }
person Erdi İzgi    schedule 18.08.2016