Android 高版本实现沉浸式状态栏

目前实现的android高版本沉浸式状态栏分为两类:
1、是纯透明状态栏;
2、是纯透明状态栏,但是状态栏字体是黑色;

将状态栏的代码封装到BaseActivity中更方便使用:
BaseActivity:
 

public abstract class BaseActivity extends AppCompatActivity {BaseActivity baseActivity;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {setTransparent();super.onCreate(savedInstanceState);getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);setContentView(initLayout());initView(savedInstanceState);setTabBar(setBarColor());initData();baseActivity = this;}private void setTransparent() {if (Build.VERSION.SDK_INT >= 21) {int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;getWindow().getDecorView().setSystemUiVisibility(option);getWindow().setStatusBarColor(Color.TRANSPARENT);} else if (Build.VERSION.SDK_INT >= 19) {//4.4全透明WindowManager.LayoutParams params = getWindow().getAttributes();params.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | params.flags;}}protected abstract int setBarColor();void setTabBar(int type) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (type == 1) {//纯透明黑字StatusBarLightMode(this);} else {//黑底白字SystemBarTintManager tintManager = new SystemBarTintManager(this);tintManager.setStatusBarTintEnabled(true);tintManager.setStatusBarTintResource(R.color.white);//通知栏所需颜色}}}/*** 设置状态栏黑色字体* 适配4.4以上版本MIUI、Flyme和6.0以上版本其他Android** @param activity activity* @return 1:MIUUI 2:Flyme 3:android6.0*/public static int StatusBarLightMode(Activity activity) {int result = 0;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) {result = 2;} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);result = 3;}}return result;}/*** @param window 需要设置的窗口* @param dark   是否把状态栏字体及图标颜色设置为深色* @return boolean 成功执行返回true*/private static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {boolean result = false;if (window != null) {try {WindowManager.LayoutParams lp = window.getAttributes();Field darkFlag = WindowManager.LayoutParams.class.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");Field meizuFlags = WindowManager.LayoutParams.class.getDeclaredField("meizuFlags");darkFlag.setAccessible(true);meizuFlags.setAccessible(true);int bit = darkFlag.getInt(null);int value = meizuFlags.getInt(lp);if (dark) {value |= bit;} else {value &= ~bit;}meizuFlags.setInt(lp, value);window.setAttributes(lp);result = true;} catch (Exception e) {result = false;}}return result;}//设置布局protected abstract int initLayout();protected abstract void initView(Bundle savedInstanceState);//初始化数据protected abstract void initData();
}

正常Activity继承之后重写 setBarColor 方法返回1就行,需要注意的是,这个方法需要在AndroidManifest方法里面将theme改成hideAppTheme;

hideAppTheme:

   <!-- Base application theme. --><style name="HideAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">//这两个语句就是设置隐藏标题栏的语句<item name="windowActionBar">false</item><item name="windowNoTitle">true</item></style>

然后就可以直接使用了,效果图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681854.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重学java 33.API 4.日期相关类

任何事&#xff0c;必作于细&#xff0c;也必成于实 —— 24.5.9 一、Date日期类 1.Date类的介绍 1.概述: 表示特定的瞬间,精确到亳秒 2.常识: a.1000毫秒 1秒 b.时间原点:1970年1月1日 0时0分0秒(UNIX系统起始时间),叫做格林威治时间,在0时区上 c.时区:北京位于东八区,一个时区…

一个递推通项公式研究

递推关系为a(n) ​pa(n−1) ​ qa(n−2) ​&#xff0c;本项前一项*2前前项&#xff0c;具体如 1&#xff0c;1&#xff0c;3&#xff0c;7&#xff0c;17&#xff0c;41&#xff0c;99&#xff0c;239&#xff0c;…… 一般的递推关系可以用以下方法 得两个解&#xff1a; …

WPF控件之StackPanel布局控件

StackPanel别名堆栈panel 使其子元素按照一定方式进行布局&#xff0c;子元素排布方式要么设置为水平排布&#xff0c;要么垂直排布。 属性 Orientation设置排列方式(默认的是垂直排布) : Horizontal水平排布 Vertical 垂直排布 实例 <StackPanel Orientation"Vert…

【Python】什么是皮尔森系数

我不完美的梦 你陪着我想 不完美的勇气 你说更勇敢 不完美的泪 你笑着擦干 不完美的歌 你都会唱 我不完美心事 你全放在心上 这不完美的我 你总当做宝贝 你给我的爱也许不完美 但却最美 &#x1f3b5; 周冬雨《不完美女孩》 皮尔森相关系数&#xff08;Pe…

力扣HOT100 - 4. 寻找两个正序数组的中位数

解题思路&#xff1a; 两个数组合并&#xff0c;然后根据奇偶返回中位数。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int m nums1.length;int n nums2.length;int[] nums new int[m n];if (m 0) {if (n % 2 0) return (nums2…

自动控制原理学习--平衡小车的控制算法(三)

上一节PID的simulin仿真&#xff0c;这一节用LQR 一、模型 二、LQR LQR属于现代控制理论的一个很重要的点&#xff0c;这里推荐B站的【Advanced控制理论】课程&#xff08;up主DR_CAN&#xff09;&#xff0c;讲得很好&#xff0c;这里引用了他视频里讲LQR的ppt。 LQR属于lo…

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本&#xff08;函数做调…

手机视频提取gif怎么操作?分享这个方法不能错过!

随着网络的发展动态gif表情包已经是人们交流的重要部分了。想要通过手机来实现视频转换gif的操作&#xff0c;还不想下载软件的情况下。可以通过使用手机端的视频转gif工具-GIF中文网&#xff0c;无需下载软件。手机端轻松一键就能在线实现视频提取gif的操作。一起来看看具体的…

每日Attention学习4——Spatial Attention Module

模块出处 [link] [code] [MM 21] Complementary Trilateral Decoder for Fast and Accurate Salient Object Detection 模块名称 Spatial Attention Module (SAM) 模块作用 空间注意力 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional a…

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时&#xff0c;将搜索结果中的关键词高亮显示&#xff0c;可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中&#xff0c;你可以使用内置的dr_keyword_highlig…

3D点云处理的并行化

在我们的项目中&#xff0c;我们研究了数百万级 3D 点云上的空间局部计算&#xff0c;并提出了两种主要方法&#xff0c;可以提高 GPU 的速度/吞吐量&#xff0c;同时保持最终结果的性能准确性。 通过空间局部&#xff0c;我们的意思是每个像素独立地基于其局部邻域中的点执行…

【python】模块与包

Python中的模块和包是组织和管理代码的重要工具。通过模块和包&#xff0c;你可以更好地管理和重用你的代码&#xff0c;使得代码更加模块化和可维护。 目录 前言 正文 一、模块 1、模块的分类 1&#xff09;内置模块 python解释器中默认拥有的模块可以直接使用&#xff08;…