背景

项目想让整个app能够全部融到手机中,所以需要对状态栏和导航栏进行适配

参考

透明状态栏android
【Android】状态栏的适配-符合activity活动的主流颜色(附代码)

val lp = window.attributeslp.flags = lp.flags or WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUSwindow.attributes = lp

问题发现

在有些机型上是存在半透明的情况,例如华为的机子;但是在小米这里就很完美地展现。很迷。

改进代码实现

采用kotlin的扩展函数

import android.app.Activity
import android.graphics.Color
import android.view.View
import android.view.ViewTreeObserver
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompatfun Activity.setTransparentStyle(view: View) {window.statusBarColor = Color.TRANSPARENTWindowCompat.setDecorFitsSystemWindows(window, false)view.viewTreeObserver.addOnGlobalLayoutListener(object :ViewTreeObserver.OnGlobalLayoutListener {override fun onGlobalLayout() {view.viewTreeObserver.removeOnGlobalLayoutListener(this)WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = trueview.setPadding(0,ViewCompat.getRootWindowInsets(window.decorView)?.getInsets(WindowInsetsCompat.Type.statusBars())?.top ?: 0,0,ViewCompat.getRootWindowInsets(window.decorView)?.getInsets(WindowInsetsCompat.Type.navigationBars())?.bottom ?: 0)}})
}

在onCreate的时候调用上述代码即可

【Android】透明状态栏和导航栏的适配解决方案满足所有机型 kotlin java相关推荐

  1. Android 沉浸式透明状态栏与导航栏

    Android 系统自4.2 开始 UI 上就没多大改变,4.4 也只是增加了透明状态栏与导航栏的功能 这个特性是andorid4.4支持的,最少要api19才可以使用.下面介绍一下使用的方法,非常得 ...

  2. Android隐藏状态栏、导航栏

    Android隐藏状态栏.导航栏 [java] view plaincopy private void hideStatusNavigationBar(){ if(Build.VERSION.SDK_ ...

  3. 关于Android全面屏虚拟导航栏的适配总结

    Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...

  4. 固定导航栏android,Android 状态栏和导航栏的真终极解决方案

    去年我写过一篇文章,透明状态栏和导航栏的终极解决方案,并在 Github 上开源了代码,https://github.com/Zackratos/UltimateBar,其实在那之后,我一直对这个项目 ...

  5. android界面UI美化:沉浸模式、全透明或半透明状态栏及导航栏的实现

    android api19开始我们就能对顶部状态栏和底部导航栏进行半透明处理了,而api21开始则可以实现全透明状态栏与导航栏以及开启沉浸模式,至于什么是沉浸模式,大家百度一下应该就都知道了,有一点需 ...

  6. android界面美化教程,android界面UI美化:沉浸模式、全透明或半透明状态栏及导航栏的实现...

    android api19开始我们就能对顶部状态栏和底部导航栏进行半透明处理了,而api21开始则可以实现全透明状态栏与导航栏以及开启沉浸模式,至于什么是沉浸模式,大家百度一下应该就都知道了,有一点需 ...

  7. Android 5.0状态栏和导航栏

    Material Design推出之后,app中也開始沿用这样的风格 今天来说一下状态栏颜色设置,在4.4的时候推出了透明状态栏和导航栏.在不使用第三方库的情况下,4.4还是没有全然解决存在actio ...

  8. android 电话 状态栏,Android透明式状态栏、导航栏实现

    有很多应用有透明式状态栏.导航栏,表现形式是在不同页面里,状态栏可以与最上面的背景图片或者颜色保持一致.典型的案例就是手Q:(如图所示) 很明显,在手Q中主要的几个页面的标题栏(ActionBar位置 ...

  9. android 导航栏半透明,Android 沉浸式/透明式状态栏、导航栏

    前言 Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果.虽然此特性最早出现在ios,但不否认效果还是很赞的. 至于4.4以下的手机,就不要考虑 ...

最新文章

  1. html5 drag this,HTML5拖放(drag和drog)
  2. iOS 9音频应用播放音频之iOS 9音频播放进度
  3. Go 语言编程 — gorm 数据库版本迁移
  4. 老大难的空指针,如何优雅处理?
  5. Python Mysql_db对数据查询进行处理
  6. 【机器视觉】Qt联合Halcon编程之显示多图片
  7. [Leetcode][第647题][JAVA][回文子串][动态规划][中心扩展][Manacher 算法]
  8. 清华提出LogME,无需微调就能衡量预训练模型的下游任务表现!
  9. 包含目录、库目录、附加包含目录、附加库目录、附加依赖项如何使用? 及静态库,动态库的创建与调用和vs里引用的使用
  10. 怎么使用Eclipse默认的keystore签名打包成Apk
  11. git 如何忽略掉文件夹_如何使git忽略某些文件或文件夹
  12. Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决
  13. 从0开始构建自己的前端知识体系-JS-事件-键盘事件总结
  14. java 求正割_Java中AQS基本实现原理
  15. 【Java获取国家法定节假日三种工具类其三】
  16. ESP8266模块使用完整教程
  17. ffmpeg中支持的音频互相转换的采样格式和声道分布
  18. C语言 输入一个整数n,求出其阶乘
  19. Android图表控件MPAndroidChart——LineChart实现 XY轴、原点线的直尺刻度样式
  20. H264/AVC Hypothetical Reference Decoder(HRD)

热门文章

  1. html中css设置文本对齐,css文本对齐使用哪个属性
  2. 完美指南|如何使用 ODBC 进行无代理 Oracle 数据库监控?
  3. centos固定ip配置
  4. Linux tty 终端设备驱动
  5. iOS- Exception Type: 00000020:什么是看门狗机制
  6. 每个Web开发者都该了解的12条命令行
  7. Spark MLlib (1)
  8. list字符串转对象listT或者字符串转map
  9. properties介绍
  10. Linux 命令之删除命令