Android Status Bar的隐藏与浮层效果

来源:互联网 发布:神经网络数据融合 编辑:程序博客网 时间:2024/05/18 16:57

Android SystemBar各种风格案例

  • Android System Bar(Status Bar 和Navigation Bar)暗淡效果

  • Android Status Bar的隐藏与浮层效果

  • Android NavigationBar隐藏与浮层

  • Android SystemBar(Status Bar 和Navigation Bar)设置 Immersive与Sticky Immersion风格

  • Android 响应System UI状态,焦点改变,手势处理

隐藏Status Bar


StatusBar显示状态

image

StatusBar隐藏状态

image

在Android 4.0和更低版本下

通过Theme主题来直接控制应用程序的StatusBar:

<application    ...    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >    ...</application>

或者,在onCreate()中通过WindowManager设置FLAG_FULLSCREEN标示来实现。注意点:setContentView之前写入。

class MainActivity : AppCompatActivity(), View.OnClickListener {    private var tag = MainActivity::class.java.simpleName    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        if (Build.VERSION.SDK_INT<16){              setSystemBarOnLowerVersion()        }        setContentView(R.layout.activity_main)    }    /**     * 在4.0 及其以下,设置StatusBar     */    fun setSystemBarOnLowerVersion(){                 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)    }}

更好的做法是使用 FLAG_LAYOUT_IN_SCREEN 来实现相同效果,还能预防当Statusbar显示与隐藏导致界面布局重新计算大小。

在Android 4.1和更高版本下

在Android4.1及其以上版本,使用setSystemUiVisibility()来控制UI flag,比使用WindManger flag更容易控制。

   /**     * 全屏,会隐藏StatusBar     */    var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN   /**     * StatusBar正常隐藏的风格     */    fun setStatusNormalStyle(window: Window) {        var flag =  action_hide_status_bar        window.decorView.systemUiVisibility = flag    }

浮层效果:确保StatusBar浮在界面布局之上

   /**     * 全屏,会隐藏StatusBar     */    var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN   /**     * 系统4.1或者更高版本,可以使StatusBar浮在内容上面,     *     * 与 View.SYSTEM_UI_FLAG_FULLSCREEN效果类似     */    var action_hide_status_bar_float = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN    /**     * 与SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION或者SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN     * 结合使用,确保布局稳定     */    var action_stable = View.SYSTEM_UI_FLAG_LAYOUT_STABLE    /**     * StatusBar浮层隐藏的风格     */    fun setStatusFloatStyle(window: Window) {        var flag =  action_hide_status_bar or action_hide_status_bar_float or action_stable        window.decorView.systemUiVisibility = flag    }

使用View.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENView.SYSTEM_UI_FLAG_LAYOUT_STABLE,确保StatusBar能够浮在界面布局之上,也不会产生界面兼容问题。

效果如下

这里写图片描述

本项目案例:https://github.com/13767004362/ManageSystemUIDemo

参考资源

  • 官方介绍:https://developer.android.google.cn/training/system-ui/index.html
原创粉丝点击