私はビデオプレーヤーアプリケーションを開発しており、問題に直面しています。私はフルスクリーンボタンを含むカスタムビデオコントローラを持っており、フルスクリーンモードに入るときにシステムUI(ナビゲーションとステータスバー)を非表示にしたい。私はthisのような何かをしようとしましたが、正しく動作しません。アプリケーションを起動すると、次のスクリーンショットのようなプレーヤーが表示されます。 フルスクリーンボタンをクリックすると、向きが横向きに変わり、システムのUIは非表示になりますが、プレーヤーはフルスクリーンになりません。 また、ビデオコントローラを表示する代わりに、システムのUIが表示されます。 これを正しく実装するにはどうすればよいですか?以下は、システムUIを示す/フルスクリーンや隠ぺいのための私の方法です:AndroidのシステムUIを正しく隠す方法
@Override
public void toggleFullscreen() {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mVideoContainer.getLayoutParams();
if (!mFullscreen) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
hideSystemUI();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
params.width = metrics.widthPixels;
params.height = metrics.heightPixels;
params.setMargins(0, 0, 0, 0);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showSystemUI();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
params.width = metrics.widthPixels;
params.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, metrics);
params.setMargins(0, 0, 0, 0);
}
mVideoContainer.setLayoutParams(params);
mFullscreen = !mFullscreen;
}
private void hideSystemUI() {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
} else {
uiOptions |= View.SYSTEM_UI_FLAG_FULLSCREEN;
}
decorView.setSystemUiVisibility(uiOptions);
}
private void showSystemUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(0);
}
は、ここに私のレイアウトです:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/video_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/videoSurfaceContainer"
android:layout_width="match_parent"
android:layout_height="300dp" >
<SurfaceView
android:id="@+id/videoSurface"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
それはまだ –
@OlegRyabtsevは、あなたのレイアウトが一致してい:(ナビゲーションバーの場所でフルスクリーンするために入力した後の空きスペースを残しあなたのxmlの中で、あなたのXMLの 'android:layout_height =" match_parent "'の親は? –
私はlayout_height = "match_parent"を持つルートレイアウトとしてLinearLayoutを持っており、この中には300dpの高さを持つFrameLayoutがあります。マッチしようとするフルスクリーンボタンをクリックしたときにFrameLayoutのサイズが動的に変更される –