第一篇博客献给曾经帮助我N次的CSDN,在此感谢那些帮助我头发越来越少的***。

刘海屏出来有一段时间了,为了适配刘海屏找了不少方案,感觉都比较费劲。
因为我们项目需求,状态栏是渐变色,所以我采用了全面屏的模式来对标题栏状态栏进行开发;

总体思路:刘海屏状态栏的高度其实和普通的都是一样,所以只要给全面屏的页面设置一个paddingtop就可以实现,我是写一个公共的头部布局在基类里用,给头布局设置一个paddingtop,paddingtop的值就是状态栏的高度。具体代码如下:

第一步:设置全屏,设置状态栏透明

    /** @param activity*/public static void fullScreen(Activity activity) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色Window window = activity.getWindow();View decorView = window.getDecorView();//两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;decorView.setSystemUiVisibility(option);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(Color.TRANSPARENT));} else {Window window = activity.getWindow();WindowManager.LayoutParams attributes = window.getAttributes();int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;attributes.flags |= flagTranslucentStatus;window.setAttributes(attributes);}}}

第二步:添加头布局

也可以使用跟布局,具体情况看自己的项目

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".base.MVPBaseActivity"><!-- 顶部导航 --><include
        android:id="@+id/includ_title"layout="@layout/header_title_layout" /><!-- 中间填充部分 --><FrameLayout
        android:id="@+id/fl_body"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_below="@+id/includ_title"android:orientation="vertical" />
</RelativeLayout>

第三步:给头布局设置布局的paddingtop

根据SDK号去判断是否设置paddingtop,不支持沉浸式状态栏的机型,直接不进行设置即可。这样既实现了沉浸式状态栏,同时又适配了刘海屏,不需要考虑手机品牌等问题。

/** @param view 需要设置的view,我这里用到的是布局文件中的include_title*/
public void setBarPadding(View view) {if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {view.setPadding(view.getPaddingLeft(),UIUtils.dip2px(8),view.getPaddingRight(), view.getPaddingBottom());} else {view.setPadding(view.getPaddingLeft(), getStatuBarHeight(), view.getPaddingRight(), view.getPaddingBottom());}}

有什么问题,欢迎大家指教。

沉浸式状态栏实现,完美适配Android刘海屏,终极兼容相关推荐

  1. Android 沉浸式状态栏和全面屏遇到刘海屏

    文章目录 一.沉浸式状态栏 1.1 Android 4.4(API 19)- Android 5.0( API 21) 1.2 Android 5.0(API 21)以上版本 1.3 Android ...

  2. android刘海屏高度适配,Android刘海屏的适配

    这里主要是介绍一下Android P中刘海屏的适配以及Android P之前的适配.为什么要分开呢?因为Android P之前官方还没提供API来进行适配,都是由各家厂商来提供适配方案的. 1.And ...

  3. android 沉浸式状态栏字体颜色,改变Android状态栏字体颜色和实现沉浸式状态栏

    目前已知的改变Android状态栏字体颜色的方法只有3种情况下可以实现,分别是手机是MIUI系统.魅族手机以及Android6.0.改变颜色方法分别如下: * 改变小米的状态栏字体颜色为黑色, 要求M ...

  4. android刘海屏高度适配,Android刘海屏适配

    刘海屏幕的适配,在全面屏设置下,顶部有刘海的区域,有的会导致刘海把标题栏等内容遮盖如下图,这是美团的统一版本在小米和华为上的适配,可以看到小米的未遮挡内容,但在华为设备上,明显刘海遮住了一部分内容,目 ...

  5. android沉浸式 字体,Android沉浸式状态栏背景色以及字体颜色的修改

    在activity中设置透明状态栏 的思路: 1.让activity的布局全屏 此时布局会和状态栏重叠 2.让布局最上方预留出和状态栏高度一样的高度,将状态栏的背景色设置为透明 效果如下: 一般是在s ...

  6. Android 沉浸式状态栏 实现方式二 ( 更简单 )

    以前写过一个沉浸式状态栏 的实现方式 Android 沉浸式状态栏 实现方式一 现在有个更为简单的实现方式 . 相关链接 http://www.apkbus.com/forum.php?mod=vie ...

  7. Android开发类似苹果iOS 7的沉浸式状态栏

    1.什么是沉浸式状态栏? 沉浸式状态栏是指Activity的ActionBar的颜色和状态栏的颜色一样,两者连接起来了,看起来就像是一个整体,跟苹果的ios7以后的样式一样.如下图所示: (沉浸式状态 ...

  8. android沉浸式状态栏 图片背景,Android 补充 LayerDrawable 沉浸式状态栏

    小菜前些日子整理了两次小小的沉浸式状态栏的总结:Android 沉浸式状态栏的多种样式 和 Android 沉浸式状态栏以及伪沉浸式状态栏.今天小菜再稍稍补充一点,Java/Kotlin 代码中设置 ...

  9. 从0到1优雅实现沉浸式状态栏

    /   今日科技快讯   / 近日,国家计算机病毒中心发布了<移动APP违法违规问题及治理举措>.其中,MOMO陌陌.今日头条.京东金融.云闪付等下载量很高的应用也名列其中. 2016年至 ...

最新文章

  1. 数据库及页面乱码问题
  2. 工作后越来越觉得,丢什么也不能丢账号!
  3. 飞鸽传书找不到其他人的问题
  4. Android Studio --- [学习笔记]Button、TextView、EditText
  5. 微软2013年校园实习生招聘笔试题及答案
  6. LeetCode之Palindrome Number(回文数)
  7. P5127-子异和【线段树,树链剖分,位运算】
  8. 云计算实战系列十五(SQL I)
  9. 雷军回应小米新 Logo 争议;马化腾排名第 15 位,2021 全球亿万富豪榜出炉!谷歌将停止使用甲骨文的财务软件|极客头条...
  10. radar nyoj 287
  11. wireshark抓包分析怎么看进程_wireshark抓包数据怎么看?wireshark数据分析教程
  12. 锂电池及其安全使用浅析《原创》
  13. 一起学JAVA线程-JAVA Thread的基础
  14. Oracle-12c新功能基于时间点recover table
  15. form 表单验证验证方法-validate-methods.js
  16. matlab-colormap-contourf函数
  17. 支持图灵架构和安培架构的TensorFlow Python库
  18. python pb与json互转
  19. 搜狗开源内部项目管理系统Cynthia,已被数十家企业采用
  20. 计算机基础知识之了解计算机,计算机基础知识(计算机基础知识你了解吗?)...

热门文章

  1. 【算法学习笔记】67.状态压缩 DP SJTU OJ 1383 畅畅的牙签袋
  2. hiveSQL的小数取整
  3. 我在亚马逊云平台的学习成长之路
  4. 数据库 MySQL-window安装和卸载
  5. 派克轴向柱塞泵PV系列
  6. 2020腾讯教育盛典,乐博乐博被评为“年度科技创新教育品牌”
  7. python日志处理(logging模块)
  8. 初中使用计算机教学反思,谈初中信息技术教学反思
  9. 网易Airtest安装
  10. Arale Base源码分析(含Attribute)