沉浸式状态栏实现,完美适配Android刘海屏,终极兼容
第一篇博客献给曾经帮助我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刘海屏,终极兼容相关推荐
- Android 沉浸式状态栏和全面屏遇到刘海屏
文章目录 一.沉浸式状态栏 1.1 Android 4.4(API 19)- Android 5.0( API 21) 1.2 Android 5.0(API 21)以上版本 1.3 Android ...
- android刘海屏高度适配,Android刘海屏的适配
这里主要是介绍一下Android P中刘海屏的适配以及Android P之前的适配.为什么要分开呢?因为Android P之前官方还没提供API来进行适配,都是由各家厂商来提供适配方案的. 1.And ...
- android 沉浸式状态栏字体颜色,改变Android状态栏字体颜色和实现沉浸式状态栏
目前已知的改变Android状态栏字体颜色的方法只有3种情况下可以实现,分别是手机是MIUI系统.魅族手机以及Android6.0.改变颜色方法分别如下: * 改变小米的状态栏字体颜色为黑色, 要求M ...
- android刘海屏高度适配,Android刘海屏适配
刘海屏幕的适配,在全面屏设置下,顶部有刘海的区域,有的会导致刘海把标题栏等内容遮盖如下图,这是美团的统一版本在小米和华为上的适配,可以看到小米的未遮挡内容,但在华为设备上,明显刘海遮住了一部分内容,目 ...
- android沉浸式 字体,Android沉浸式状态栏背景色以及字体颜色的修改
在activity中设置透明状态栏 的思路: 1.让activity的布局全屏 此时布局会和状态栏重叠 2.让布局最上方预留出和状态栏高度一样的高度,将状态栏的背景色设置为透明 效果如下: 一般是在s ...
- Android 沉浸式状态栏 实现方式二 ( 更简单 )
以前写过一个沉浸式状态栏 的实现方式 Android 沉浸式状态栏 实现方式一 现在有个更为简单的实现方式 . 相关链接 http://www.apkbus.com/forum.php?mod=vie ...
- Android开发类似苹果iOS 7的沉浸式状态栏
1.什么是沉浸式状态栏? 沉浸式状态栏是指Activity的ActionBar的颜色和状态栏的颜色一样,两者连接起来了,看起来就像是一个整体,跟苹果的ios7以后的样式一样.如下图所示: (沉浸式状态 ...
- android沉浸式状态栏 图片背景,Android 补充 LayerDrawable 沉浸式状态栏
小菜前些日子整理了两次小小的沉浸式状态栏的总结:Android 沉浸式状态栏的多种样式 和 Android 沉浸式状态栏以及伪沉浸式状态栏.今天小菜再稍稍补充一点,Java/Kotlin 代码中设置 ...
- 从0到1优雅实现沉浸式状态栏
/ 今日科技快讯 / 近日,国家计算机病毒中心发布了<移动APP违法违规问题及治理举措>.其中,MOMO陌陌.今日头条.京东金融.云闪付等下载量很高的应用也名列其中. 2016年至 ...
最新文章
- 数据库及页面乱码问题
- 工作后越来越觉得,丢什么也不能丢账号!
- 飞鸽传书找不到其他人的问题
- Android Studio --- [学习笔记]Button、TextView、EditText
- 微软2013年校园实习生招聘笔试题及答案
- LeetCode之Palindrome Number(回文数)
- P5127-子异和【线段树,树链剖分,位运算】
- 云计算实战系列十五(SQL I)
- 雷军回应小米新 Logo 争议;马化腾排名第 15 位,2021 全球亿万富豪榜出炉!谷歌将停止使用甲骨文的财务软件|极客头条...
- radar nyoj 287
- wireshark抓包分析怎么看进程_wireshark抓包数据怎么看?wireshark数据分析教程
- 锂电池及其安全使用浅析《原创》
- 一起学JAVA线程-JAVA Thread的基础
- Oracle-12c新功能基于时间点recover table
- form 表单验证验证方法-validate-methods.js
- matlab-colormap-contourf函数
- 支持图灵架构和安培架构的TensorFlow Python库
- python pb与json互转
- 搜狗开源内部项目管理系统Cynthia,已被数十家企业采用
- 计算机基础知识之了解计算机,计算机基础知识(计算机基础知识你了解吗?)...