您的位置:首页 > 教育 > 锐评 > 互联网企业公司简介_公司做个官网要多少钱_成都百度网站排名优化_外贸网络推广经验

互联网企业公司简介_公司做个官网要多少钱_成都百度网站排名优化_外贸网络推广经验

2024/10/5 16:26:23 来源:https://blog.csdn.net/qq_43358469/article/details/142261695  浏览:    关键词:互联网企业公司简介_公司做个官网要多少钱_成都百度网站排名优化_外贸网络推广经验
互联网企业公司简介_公司做个官网要多少钱_成都百度网站排名优化_外贸网络推广经验
问题

在Activity里面设置全屏显示(保留底部按钮的全屏),刚开始的时候显示的也是全屏,但是在此页面进行一些操作之后,全屏变成非全屏了。

全屏设置方法

在 Activity 中的 onCreate 方法里,添加以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 隐藏状态栏(保留底部按钮)View decorView = getWindow().getDecorView();decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}

这样就可以显示全屏了,但是有时候会退出全屏,显示顶部的状态栏,导致页面变化。

问题原因

设置全屏模式可能会受到系统或应用其他元素的影响,导致全屏模式被临时打断。

系统 UI 状态管理

在 Android 中,全屏模式通常通过隐藏状态栏和导航栏来实现。这些 UI 元素的显示与隐藏是由系统控制的。当应用处于全屏模式时,系统会将这些栏隐藏。但是,当应用显示 Toast、对话框或其他系统提示时,这些元素可能会暂时中断全屏状态,以确保用户能够看到这些重要的系统提示信息。

1.Toast 的影响
Toast 是一种短暂的通知,通常显示在屏幕的底部。显示 Toast 时,系统会重新绘制屏幕来保证 Toast 的可见性。这可能导致全屏模式被中断,状态栏和导航栏重新出现。虽然这种情况通常是暂时的,但可能会导致全屏体验的中断。

2.对话框和弹出窗口
对话框、弹出窗口或其他系统级别的提示(如通知、权限请求)通常会覆盖应用的 UI。这些元素通常会强制重新绘制整个屏幕,包括状态栏和导航栏。这是为了确保用户能够清楚地看到这些重要的系统消息和交互元素。

3.全屏模式的持久性
为了确保全屏模式在这些系统元素影响下仍然有效,应用需要在每次返回前台时重新设置全屏状态。全屏模式的设置不是完全持久的,因为系统可能会在需要时恢复默认 UI 元素(如状态栏和导航栏)

如何确保全屏模式

1.在 onResume 中重新设置全屏:
通过在 onResume 中重新设置全屏,可以确保每次应用回到前台时都会重新应用全屏模式。

但是有时候我们会在onResume里面做一些其他操作,代码可能会看起来比较乱。

2.在onWindowFocusChanged里面设置

onWindowFocusChanged 是 Activity 中的一个生命周期方法,它在窗口的焦点状态发生变化时被调用。具体来说,当 Activity 的窗口获得或失去焦点时,这个方法会被触发。它可以用来处理以下情况:

恢复全屏模式:如果应用需要在窗口获得焦点时保持全屏,可以在这个方法中重新设置全屏模式。

更新 UI:可以在这个方法中更新 UI 元素,确保它们在获得焦点时的显示状态是正确的。

管理资源:在窗口失去焦点时,可以暂停动画或释放一些资源,节省系统资源。

所以可以这样设置

    @Overridepublic void onWindowFocusChanged(boolean hasFocus) {View decorView = getWindow().getDecorView();decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);super.onWindowFocusChanged(hasFocus);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com