Медиаплеер в полноэкранном режиме в Recyclerview
У меня есть мнение о переработчике, у меня есть медиаплееры. Я хочу сделать их на весь экран одним нажатием кнопки. Я попробовал два метода для реализации этого.
Создайте новое намерение и передайте детали видео в новое намерение (текущая позиция и URL). Однако это вызвало много проблем с конечным автоматом Media Player.
Получить размеры экрана и расширить вид до размера экрана. Проблема с этим в том, что просмотр реселлера по-прежнему можно прокручивать. Я создал сенсорный слушатель для перехвата сенсорного события, но также отключил сенсорные события на элементе рециркулятора.
Второй вариант работает немного лучше, чем первый, за исключением. прокрутка окна рециркуляции и б. скрытие и отображение строки состояния, когда она снова отображается после скрытия вместе с панелью инструментов, она перекрывает панель инструментов.
Это код, который я использую, чтобы установить на полный экран и скрыть панель инструментов / панель уведомлений.
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" вы можете временно включить / отключить функцию прокрутки вашего повторного просмотра.