Android中的全屏活动?

Pra*_*een 571 android fullscreen android-activity android-fullscreen

如何全屏制作活动?我的意思是没有通知栏.有任何想法吗?

Cri*_*ian 1000

你可以以编程方式执行:

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以通过您的AndroidManifest.xml文件来完成:

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您使用的是AppCompatActivity,则需要添加新主题

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后使用它.

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.Fullscreen"/>
Run Code Online (Sandbox Code Playgroud)

感谢/sf/answers/1775563541/

  • 只是android:theme ="@ android:style/Theme.NoTitleBar.Fullscreen"属性对你的活动清单就足够了.谢谢 :) (61认同)
  • 如果您的应用使用任何其他主题,请使用相应的主题名称Eg For White主题`@android:style/Theme.Holo.Light.NoActionBar.Fullscreen` (19认同)
  • 我更喜欢程序化的方式而且它有效. (6认同)
  • 在清单中设置主题会导致启动时出现黑屏,最好在代码中执行此操作. (5认同)
  • 如果您正在使用ActionBar并且只是不希望TitleBar删除行`requestWindowFeature()',否则会导致NullPointer (4认同)
  • 如果您使用的是"AppCompatActivity",则需要在`super.onCreate`之前放置`requestWindowFeature`.否则,您将得到:`android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature() (2认同)
  • 此解决方案不会隐藏导航栏。 (2认同)
  • 错误`java.lang.IllegalStateException:在尝试使用主题时,您需要使用Theme.AppCompat主题(或后代)与此活动` (2认同)

Dmi*_*ide 124

KitKat提供了一种称为沉浸式全屏模式的技术. 沉浸式全屏模式演示

  • 请记住,当您的应用首次进入沉浸式模式时,系统会显示"提醒气泡".这对某些活动来说很好,但是如果你正在进行启动画面,则不行. (5认同)

Ari*_*bib 74

如果您不想使用主题,@android:style/Theme.NoTitleBar.Fullscreen因为您已经使用了自己的主题,则可以使用android:windowFullscreen.

在AndroidManifest.xml中:

<activity
  android:name=".ui.activity.MyActivity"
  android:theme="@style/MyTheme">
</activity>
Run Code Online (Sandbox Code Playgroud)

在styles.xml中:

<style name="MyTheme"  parent="your parent theme">
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowFullscreen">true</item> 
</style>
Run Code Online (Sandbox Code Playgroud)


iNF*_*iEs 48

AndroidManifest.xml文件中:

<activity
    android:name=".Launch"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>  
Run Code Online (Sandbox Code Playgroud)

或者在Java代码中:

protected void onCreate(Bundle savedInstanceState){
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
Run Code Online (Sandbox Code Playgroud)

  • 你必须添加一个代码来在JAVA中以编程方式执行该操作 (2认同)
  • requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); (2认同)

Bal*_*hnu 29

如果您使用AppCompat和ActionBarActivity,那么使用它

getSupportActionBar().hide();

  • 这个适用于Nexus 5x(Android 6),谢谢 (2认同)

jia*_*hao 23

小心

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

如果您使用任何方法将操作栏设置为以下内容:

getSupportActionBar().setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)

它将导致空指针异常.


Roh*_*har 20

尝试使用appcompat style.xml.它可以支持所有平台.

<!-- Application theme. -->
<style name="AppTheme.FullScreen" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
</style>


<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)


Fil*_*ito 12

使用Android Studio(当前版本为2.2.2)非常容易添加全屏活动.

看看步骤:

  1. 右键单击java主程序包>选择"新建">选择"活动">然后,单击"全屏活动".

第一步

  1. 自定义活动("活动名称","布局名称"等),然后单击"完成".

第二步

完成!

现在,您可以轻松完成全屏活动(请参阅java类和活动布局以了解其工作原理)!


X-B*_*... 7

对于那些使用AppCompact ... style.xml的人

 <style name="Xlogo" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

然后把名字放在你的清单中......


San*_*inh 7

对于安卓x

1.透明状态栏

window?.decorView?.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
window.statusBarColor = Color.TRANSPARENT
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

2. 透明状态栏和底部导航栏

    window.setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
    );
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

3.隐藏状态栏

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        window.insetsController?.hide(WindowInsets.Type.statusBars())
    }
    else {
        @Suppress("DEPRECATION")
        window.setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN
        )
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

4.隐藏Statubar和Bottomnav栏

val actionBar: ActionBar? = supportActionBar
          if (actionBar != null) actionBar.hide()
         window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LOW_PROFILE
            or View.SYSTEM_UI_FLAG_FULLSCREEN
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

把这段代码放在哪里?

   override fun onCreate(savedInstanceState: Bundle?) {

        /*  Put above code here ..... */
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_slider)
   }
Run Code Online (Sandbox Code Playgroud)

笔记

  • 我在 Pixel 3A 模拟器中检查了这段代码
  • 也许自定义不支持的android操作系统
  • 定型 <style name="Theme.FullScreen" parent="Theme.MaterialComponents.DayNight.NoActionBar">


Raj*_*ram 6

首先,您必须使用下面的"NoActionBar"设置应用主题

<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)

然后在全屏活动中添加这些行.

public class MainActiviy extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}
Run Code Online (Sandbox Code Playgroud)

它将隐藏操作栏/工具栏以及全屏活动中的状态栏


Din*_*ith 6

在 styles.xml 中添加此内容

<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

例子 -

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:windowFullscreen">true</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并使用以下代码更改 AndroidManifest 文件

android:theme="@style/AppTheme"
Run Code Online (Sandbox Code Playgroud)

例子 -

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
    android:supportsRtl="true">
Run Code Online (Sandbox Code Playgroud)


Bik*_*h M 5

谢谢你的回答@Cristian我得到了错误

android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature()

我解决了这个问题

@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

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

    setContentView(R.layout.activity_login);

    -----
    -----
}
Run Code Online (Sandbox Code Playgroud)


Gal*_*Rom 5

显示完全沉浸式:

private void askForFullScreen()
    {
        getActivity().getWindow().getDecorView().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);
    }
Run Code Online (Sandbox Code Playgroud)

退出完全沉浸模式:

 private void moveOutOfFullScreen() {
        getActivity().getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
Run Code Online (Sandbox Code Playgroud)


Pha*_*inh 5

AndroidManifest.xml中

<activity ...
          android:theme="@style/FullScreenTheme"
    >
</activity>
Run Code Online (Sandbox Code Playgroud)

I.您的主要应用主题是Theme.AppCompat.Light.DarkActionBar

对于隐藏ActionBar/StatusBar
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--this property will help hide the ActionBar-->
    <item name="windowNoTitle">true</item>
    <!--currently, I don't know why we need this property since use windowNoTitle only already help hide actionbar. I use it because it is used inside Theme.AppCompat.Light.NoActionBar (you can check Theme.AppCompat.Light.NoActionBar code). I think there are some missing case that I don't know-->
    <item name="windowActionBar">false</item>
    <!--this property is used for hiding StatusBar-->
    <item name="android:windowFullscreen">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

对于隐藏系统导航栏

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        setContentView(R.layout.activity_main)
        ...
    }
 }
Run Code Online (Sandbox Code Playgroud)

II.您的主要应用主题是Theme.AppCompat.Light.NoActionBar

对于隐藏ActionBar/StatusBar
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--don't need any config for hide ActionBar because our apptheme is NoActionBar-->
    <!--this property is use for hide StatusBar-->
    <item name="android:windowFullscreen">true</item> // 
</style>
Run Code Online (Sandbox Code Playgroud)

对于隐藏系统导航栏

类似Theme.AppCompat.Light.DarkActionBar.

演示
希望它有所帮助