状态栏与全屏的处理

概述

在做项目功能的时候,做到有关页面全屏的处理时,发现状态栏的下拉会遮住全屏页面一小部分视图,这样的话可能会影响遮住的那部分的功能的实现。那怎么办呢?现在我们就来处理一下这个问题。

实例

废话不多说,直接来讲吧。首先我们在manifest中设置Activity的主题为 android:theme=”@android:style/Theme.NoTitleBar”>,在Activity中setContentView之前设置 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE),这样是设置状态栏一直可见,就是说顶部留有位置给状态栏。我们来看看一看其它的flag

现在我们来逐一说一说这些flag的作用

1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏

2. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉,下拉状态栏的时候,会覆盖顶部布局。

3. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏),这个不会隐藏状态栏。有些手机会用虚拟按键来代替物理按键。

4. View.SYSTEM_UI_FLAG_IMMERSIVE:沉浸式设计,需结合其它的flag来使用。

5. View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:粘性沉浸式设计,需结合其它的flag来使用。

6. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

7. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。

8. View.SYSTEM_UI_FLAG_LAYOUT_STABLE:不管状态栏隐藏与否,状态栏的位置都会保留。

9. View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:效果同View.SYSTEM_UI_FLAG_VISIBLE。但是状态栏上的图标会被隐藏。

10. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

如果你在manifest中设置Activity的theme为Fullscreen,你会发现你在代码中设置各种flag都不会生效。还有一个就是要注意不同的flag适用的版本,你还可以多个flag一起用来满足你的需求。

总结

现在我在开发过程中遇到,当在弹出Dialog或者消失的时候,虚拟按键会弹出来,不能达到手动去弹出虚拟按键的时候才弹出,就算自己在做一遍处理,虚拟按键会先弹出在消失,用户体验不好。我看了一下游戏的界面,他们可以做到切换场景的时候,虚拟按键不会弹出。现在正在寻求解决方法,希望知道的童鞋给我留言,多谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android播放器切换全屏是一种常见的操作,能够提供更好的观看体验。在Android开发中,要实现播放器的全屏切换,可以通过以下步骤进行: 1. 首先,需要在播放器的布局文件中添加一个用于全屏显示的组件,例如一个FrameLayout,并设置其宽度和高度为match_parent。 2. 在播放器的Activity或Fragment中,监听并处理全屏切换的事件。一般可以通过点击一个全屏按钮或者设备屏幕旋转来触发全屏切换。 3. 当触发全屏切换时,需要进行一些操作,首先是隐藏系统状态栏和导航栏,可以通过设置Activity的Window属性来实现。例如,在Activity的onCreate()方法中可以添加如下代码: ``` getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); ``` 4. 接下来,需要调整播放器的宽度和高度,以充满整个屏幕。可以通过设置播放器容器的LayoutParams来实现,例如: ``` FrameLayout frameLayout = findViewById(R.id.player_container); frameLayout.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); ``` 5. 调整完播放器的尺寸后,还需要调整播放器的布局,使其能够适应全屏显示。这可能涉及到改变视频的缩放模式、调整控制面板的位置等等,具体操作可以根据需求进行调整。 通过上述步骤,就可以实现Android播放器的全屏切换。当切换到全屏时,用户能够更好地享受视频内容,提供了更好的观看体验。同时,在退出全屏时,需要还原回原始的布局和尺寸设置,以保持应用的稳定性和一致性。 ### 回答2: Android 播放器切换全屏是指在播放视频时,将播放器界面自动切换到全屏模式,以便用户可全屏观看视频。在Android开发中,实现播放器切换全屏通常需要以下步骤: 1. 首先,需要在布局文件中创建一个用于播放视频的VideoView组件,并设置其宽高为match_parent以占满整个屏幕。 2. 在Activity或Fragment中,需要实现全屏切换的逻辑。一种常见的方式是监听屏幕方向变化,并在全屏与非全屏之间进行切换。 3. 在监听屏幕方向变化时,可以通过重载Activity或Fragment的onConfigurationChanged方法来响应屏幕方向变化事件。当屏幕方向变为横屏时,将播放器的布局参数设置全屏,同时隐藏其他UI元素(例如标题栏、导航栏等)。当屏幕方向变为竖屏时,恢复播放器的原始布局参数,并显示其他UI元素。 4. 在切换全屏时,还需要调用Activity或Fragment的setRequestedOrientation方法来设置屏幕方向,以保证播放器可以正确显示。 5. 在全屏切换过程中,还可以添加一些动画效果,使切换过程平滑。 6. 最后,为了确保播放器能够正常播放全屏视频,还需要注意一些细节,例如在全屏切换时暂停播放、切换屏幕方向时重新加载视频等。 综上所述,Android 播放器切换全屏可以通过监听屏幕方向变化,调整播放器布局参数以及设置屏幕方向等步骤来实现。通过合理的逻辑和界面设计,可以让用户在Android设备上享受到更好的全屏视频观看体验。 ### 回答3: Android播放器切换全屏需要以下步骤: 1. 首先,确保在播放器布局中有一个用于视频显示的容器,比如一个SurfaceView或TextureView。 2. 在播放器的Activity或Fragment中,设置一个标志变量来记录当前的屏幕状态,比如fullscreenFlag,默认为false。 3. 在播放器的布局文件中,添加一个全屏按钮,使用一个ImageView来表示。当用户点击全屏按钮时,触发一个点击事件。 4. 在点击事件中,先检查当前屏幕状态。如果fullscreenFlag为false,即当前非全屏状态,则进行全屏切换操作。 5. 在全屏切换操作中,首先修改fullscreenFlag为true,然后获取到当前的Activity对象,并设置显示方式为全屏模式,同时隐藏状态栏和导航栏。 6. 接下来,获取到当前Activity的窗口对象,调用setFlags方法并传入FLAG_FULLSCREEN标志,以全屏显示视频。 7. 修改播放器布局中的容器,将其宽度和高度设置为MATCH_PARENT,使视频充满整个屏幕。 8. 最后,调用横屏切换方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE),将Activity设置为横屏显示。 通过以上步骤,可以实现Android播放器的全屏切换功能。当用户点击全屏按钮时,播放器会切换到全屏模式,视频会充满整个屏幕,同时隐藏状态栏和导航栏。用户可以在全屏模式下享受更好的观影体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值