Android背景图侵入式布局以及状态栏颜色

本文详细介绍了如何在Android中实现侵入式布局,即背景图延伸至状态栏,并调整状态栏颜色。通过设置主题、移除默认ActionBar、添加特定Flag以及处理不同API级别的状态栏颜色适配,最终实现背景图从状态栏顶部开始绘制的效果。同时,针对页面元素的适配,通过获取Window inset进行调整,确保元素不被状态栏遮挡。整个过程通过封装方法简化了后续使用。
摘要由CSDN通过智能技术生成

 

       很多时候我们会有改变状态栏颜色或者用背景图侵入状态栏的这种需求,所谓侵入式布局实际上就是将状态栏背景色改为透明然后将背景图从状态栏的顶部开始绘制,比如下图

废话不多说,我们从新建Activity开始一步一步来实现

第一步,添加主题,去掉默认的ActionBar

<activity android:name=".views.StatusActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            android:screenOrientation="portrait"
            android:launchMode="singleTop"/>

第二步,添加侵入式布局代码

Lollipop以上的设备

window.apply {
      clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
      addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
      decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
      statusBarColor = Color.TRANSPARENT
}
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            activity.getWindow().setStatusBarColor(Color.TRANSPARENT);

window到底是什么

        当你打开一个StandardApp的时候,从上到下你会依次看到手机状态栏(StatusBar)、导航栏(NavigationBar)、然后是Activity的实际页面。它们每一个组件都有一个不同的Window用于它们自身的绘制。Activity的Window负责显示我们设计的视图,导航栏的Window负责绘制我们的菜单、返回键等等。状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值