blob: a826c60712e6b65139a21be9114f1529068bae27 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Build;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
/**
* Uses an existing Activity to handle displaying video in full screen.
*/
public class ActivityContentVideoViewClient implements ContentVideoViewClient {
private final Activity mActivity;
private View mView;
public ActivityContentVideoViewClient(Activity activity) {
this.mActivity = activity;
}
@Override
public void enterFullscreenVideo(View view) {
FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
decor.addView(view, 0,
new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
Gravity.CENTER));
setSystemUiVisibility(decor, true);
mView = view;
}
@Override
public void exitFullscreenVideo() {
FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
decor.removeView(mView);
setSystemUiVisibility(decor, false);
mView = null;
}
@Override
public View getVideoLoadingProgressView() {
return null;
}
/**
* Returns the system ui visibility after entering or exiting fullscreen.
* @param view The decor view belongs to the activity window
* @param enterFullscreen True if video is going fullscreen, or false otherwise.
*/
@SuppressLint("InlinedApi")
private void setSystemUiVisibility(View view, boolean enterFullscreen) {
if (enterFullscreen) {
mActivity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return;
}
int systemUiVisibility = view.getSystemUiVisibility();
int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
if (enterFullscreen) {
systemUiVisibility |= flags;
} else {
systemUiVisibility &= ~flags;
}
view.setSystemUiVisibility(systemUiVisibility);
}
}