13

我有两个问题:

  1. 一个如何全屏运行我的应用程序
  2. 视频播放器如何全屏播放视频。

我已经尝试了很多,但仍在努力实现这一目标,但找不到解决方案。

我找到的解决方案列表,但它们没有满足我的要求

  • 这仅隐藏通知栏。

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

  • 也只隐藏通知栏

    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    
  • 它低调导航栏不隐藏它。

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

  • 对我的活动没有影响。

    anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

注意:

  • 我不是在谈论生根设备,所以请提供那些无需生根设备即可工作的解决方案。
  • 我不是在谈论仅隐藏通知栏,而是通过隐藏导航栏和通知栏来全屏显示。
  • 我说的是 jelly beans api 4.1 或高于 4.1 版本的 android
  • 并请用代码给出答案。

经过我的研究和你的回答,我得到了这个:

在此处输入图像描述

但我的应用应该是这样的,没有导航栏:

在此处输入图像描述

我不希望系统导航栏在我的应用程序中可见。

4

8 回答 8

30

我不确定你在追求什么,但下面隐藏了通知栏和软导航键(如在 Google Nexus 设备上所见),因此该应用程序本质上是“全屏”。

编辑2

在 Android 4.4 (API 19) 中,谷歌引入了新的沉浸式模式,它可以隐藏状态和导航栏并允许真正的全屏 UI。

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
              | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
              | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
               View.SYSTEM_UI_FLAG_LAYOUT_STABLE
             | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
             | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

参考:
https ://developer.android.com/training/system-ui/immersive.html

编辑:
使用软导航键在 Android 4.3 (API 18) 和 Android 4.1 (API 16) 上测试。

@Override
protected void onCreate(Bundle b) {
    super.onCreate(b);

    setContentView(R.layout.main);

    int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
}

有关更多信息,请阅读http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)

于 2013-08-31T02:13:09.657 回答
2

-隐藏状态栏:

我为该问题找到了一个很好的解决方案,将每个 Activity theme&设置windowSoftInputMode为以下值:

<activity   android:name=".MyActivity"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
            android:windowSoftInputMode="adjustResize">  <!-- theme : to set the activity to a full screen mode without a status bar(like in some games) -->
</activity>                                              <!-- windowSoftInputMode : to resize the activity so that it fits the condition of displaying a softkeyboard -->

有关更多信息,请参阅此处

- 隐藏通知栏:

两种方法:

1- root您的设备,然后在中打开设备adb window command,然后运行以下命令:

 adb shell >
 su >
 pm disable com.android.systemui >

并将其取回只需执行相同的操作,但更改disableenable.

2-将以下行添加到设备的build.prop文件的末尾:

qemu.hw.mainkeys = 1

然后将其取回,只需将其删除即可。

如果您不知道如何编辑build.prop文件:

  • 在您的设备上下载EsExplorer并搜索 build.prop 然后更改它的读写权限,最后添加该行。
  • 下载专门的 build.prop 编辑器应用程序,例如build.propEditor
  • 或参考那个链接
于 2014-10-02T12:39:17.910 回答
1

在新的 android 4.4 上,您应该添加以下行:

View.SYSTEM_UI_FLAG_IMMERSIVE;

所以至少在nexus4 4.4.2上的新工作解决方案是

final int mUIFlag = 
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LOW_PROFILE
              | View.SYSTEM_UI_FLAG_FULLSCREEN
              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_IMMERSIVE;

尽管与其他标志结合使用时,单独的沉浸式是行不通的。有关更多详细信息,请参阅文档。然后您在活动中添加此设置的激活,如之前所示(我只是为了保持一致性而添加)

getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
于 2014-02-08T19:18:09.537 回答
0

我制作了 2 种布局,一种用于常规尺寸,一种用于全屏和全屏我得到设备尺寸并将其分配给视频播放器

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int w=size.x;
int h=size.y;
videoPlayer.setFixedSize(w, h);
于 2013-08-29T14:13:56.077 回答
0

视频播放器通过设置全屏运行

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

setFlags()setContentView(View)

这将在任何用户交互时显示系统栏,就像视频播放器一样。

最接近全屏运行应用程序的方法是设置熄灯模式,系统按钮将显示为

要使用熄灯模式,只需使用活动中的任何视图并调用

anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

对于隐藏导航栏,请在您的中使用它,onStart()以便每次进入该活动时,它将处于全屏模式

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

我希望这有帮助 !

于 2013-08-29T16:50:32.393 回答
0

我认为您无法在 android 4.0 > 中隐藏系统栏>(仅在平板电脑中,在手机中应该可以)

您可以做的是隐藏图标并禁用某些按钮(除了家之外的所有人)

你可以试试这个:

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);              

        }

也用于禁用按钮:

这是后退按钮:

  public boolean onKeyDown(int keyCode, KeyEvent event) {
    return false;
  }

这是菜单:

@Override
public void onWindowFocusChanged(boolean hasFocus) {

        try
        {
           if(!hasFocus)
           {
                Object service  = getSystemService("statusbar");
                Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                Method collapse = statusbarManager.getMethod("collapse");
                collapse .setAccessible(true);
                collapse .invoke(service);
           }
        }
        catch(Exception ex)
        {
        }

}
于 2013-08-29T15:35:25.890 回答
0

Android 版本:4.2.2 - 设备:Vega 平板电脑

用于隐藏状态和系统栏并显示完整屏幕的 Android 应用程序我按照以下步骤操作。

AndroidManifest.xml

   <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

MainActivity.java

super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(0x10);
setContentView(R.layout.activity_main);

上面的代码非常适合我的应用程序。

于 2015-09-04T07:16:45.677 回答
-2

转到您的清单并将其添加到您的活动中

<activity
        android:name="yourPackage.yourActivity"

        android:theme="@android:style/Theme.Black.NoTitleBar">
于 2013-09-30T19:55:20.773 回答