Это может быть слишком поздно, чтобы ответить на этот вопрос, но это может помочь другим людям.
Если вы хотите реализовать полноэкранную функциональность для exoplayer, не выполняйте это через отдельное действие, вам просто нужнооткройте диалоговое окно с высотой и шириной, объединяя весь экран, и вам просто нужно добавить вид игрока, который вы использовали для exoplyer «не полный экран».
mFullScreenButton.setOnClickListener(v -> {
if (!mExoPlayerFullscreen) {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
openFullscreenDialog();
} else {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
closeFullscreenDialog();
}
});
здесь мы инициализируем onClick для полноэкранной кнопки
private void openFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
mFullScreenDialog.addContentView(playerView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mFullScreenIcon.setImageResource(R.drawable.ic_exit_fullscreen);
mExoPlayerFullscreen = true;
mFullScreenDialog.show();
}
выше - это метод, который вызывается, когда полноэкранная кнопка вызывается для соответствия экрану.А ниже приведен метод отмены полноэкранного режима.
private void closeFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
((FrameLayout) findViewById(R.id.main_media_frame)).addView(playerView);
mExoPlayerFullscreen = false;
mFullScreenDialog.dismiss();
mFullScreenIcon.setImageResource(R.drawable.ic_fullscreen);
}
Ниже приведен фрагмент кода для инициализации диалога.
mFullScreenDialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
public void onBackPressed() {
if (mExoPlayerFullscreen) {
closeFullscreenDialog();
}
super.onBackPressed();
}
};