小编Ole*_*sev的帖子

Android:如何正确隐藏系统UI

我正在开发一个视频播放器应用程序,我遇到了一个问题.我有一个自定义视频控制器,其中包含一个全屏按钮,我想在用户进入全屏模式时隐藏系统UI(导航和状态栏).我试着做一些像这样,但它不能正常工作.我的应用程序如下面的截图:

在此输入图像描述

当我单击全屏按钮时,我将方向更改为横向,我隐藏了系统UI,但我的播放器没有全屏显示.它看起来像下面的屏幕:

状态栏隐藏和导航栏也会隐藏,但播放器不会占用整个屏幕

此外,当我点击屏幕时,我想显示我的视频控制器,但系统UI显示以下内容,而不是:

当我点击屏幕时,系统UI会显示

那么,我该如何实现这种行为呢?以下是我的全屏和隐藏/显示系统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 …
Run Code Online (Sandbox Code Playgroud)

android fullscreen statusbar navigationbar

4
推荐指数
2
解决办法
5909
查看次数

标签 统计

android ×1

fullscreen ×1

navigationbar ×1

statusbar ×1