Медиаплеер в полноэкранном режиме в Recyclerview

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

  1. Создайте новое намерение и передайте детали видео в новое намерение (текущая позиция и URL). Однако это вызвало много проблем с конечным автоматом Media Player.

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

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

Это код, который я использую, чтобы установить на полный экран и скрыть панель инструментов / панель уведомлений.

 DisplayMetrics displaymetrics = new DisplayMetrics();
        application.getCurrentActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        application.getCurrentActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        application.getCurrentActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

   RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

   layoutParams.height = displaymetrics.heightPixels;
            layoutParams.width = displaymetrics.widthPixels;

 mTextureView.setLayoutParams(layoutParams);

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

main.getSupportActionBar().show();
           main.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

Поэтому я пытаюсь временно отключить прокрутку в окне рециркуляции, не предотвращая события касания элементов.

Также попытаться предотвратить наложение строки состояния на панель инструментов.

Если кто-нибудь может мне помочь, я буду очень признателен.

1 ответ

Для этого вам следует переопределить макет менеджера вашего повторного просмотра. Таким образом, будет отключена только прокрутка. Вы по-прежнему сможете обрабатывать щелчки или любые другие события касания. Например:-

public class CustomGridLayoutManager extends LinearLayoutManager {
private boolean isScrollEnabled = true;

public CustomGridLayoutManager(Context context) {
    super(context);
}

public void setScrollEnabled(boolean flag) {
    this.isScrollEnabled = flag;
}

@Override
public boolean canScrollVertically() {
   //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
    return isScrollEnabled && super.canScrollVertically();
}
}

Здесь с помощью флага "isScrollEnabled" вы можете временно включить / отключить функцию прокрутки вашего повторного просмотра.

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