一行代码实现沉浸式状态栏

Android源代码:沉浸式状态栏 Android源代码:沉浸式状态栏,透明状态栏。。。。。。 立即下载

参考了StatusBarUtil这个库,使用里面StatusBarUtil.setColor(Activity activity,int color),发现状态栏颜色改变 但透明度存在一定差异

于是用其StatusBarUtil.setTransparent(Activity activity),状态栏变为透明,但颜色却变为白色,于是看了其源码,整理出一个方法,一行代码实现沉浸式状态栏效果;

效果图:

	StatusBarUtil.setColor(this,0xc30d23,0);


import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;

/**
 * Created by Administrator on 2016/12/26.
 */

public class StatusBarUtil {

    /**
     * 设置状态栏颜色
     *
     * @param activity       需要设置的activity
     * @param color          状态栏颜色值
     * @param statusBarAlpha 状态栏透明度
     */
    public static void setColor(Activity activity, int color, int statusBarAlpha) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            activity.getWindow().setStatusBarColor(calculateStatusColor(color, statusBarAlpha));
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            // 生成一个状态栏大小的矩形
            View statusView = createStatusBarView(activity, color, statusBarAlpha);
            // 添加 statusView 到布局中
            ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
            decorView.addView(statusView);
            setRootView(activity);
        }
    }

    /**
     * 计算状态栏颜色
     *
     * @param color color值
     * @param alpha alpha值
     * @return 最终的状态栏颜色
     */
    private static int calculateStatusColor(int color, int alpha) {
        float a = 1 - alpha / 255f;
        int red = color >> 16 & 0xff;
        int green = color >> 8 & 0xff;
        int blue = color & 0xff;
        red = (int) (red * a + 0.5);
        green = (int) (green * a + 0.5);
        blue = (int) (blue * a + 0.5);
        return 0xff << 24 | red << 16 | green << 8 | blue;
    }

    /**
     * 设置根布局参数
     */
    private static void setRootView(Activity activity) {
        ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
        rootView.setFitsSystemWindows(true);
        rootView.setClipToPadding(true);
    }

    /**
     * 生成一个和状态栏大小相同的半透明矩形条
     *
     * @param activity 需要设置的activity
     * @param color    状态栏颜色值
     * @param alpha    透明值
     * @return 状态栏矩形条
     */
    private static View createStatusBarView(Activity activity, int color, int alpha) {
        // 绘制一个和状态栏一样高的矩形
        View statusBarView = new View(activity);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                getStatusBarHeight(activity));
        statusBarView.setLayoutParams(params);
        statusBarView.setBackgroundColor(calculateStatusColor(color, alpha));
        return statusBarView;
    }

    /**
     * 获取状态栏高度
     *
     * @param context context
     * @return 状态栏高度
     */
    private static int getStatusBarHeight(Context context) {
        // 获得状态栏高度
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        return context.getResources().getDimensionPixelSize(resourceId);
    }


}






一行代码完美实现Android沉浸式效果 一行代码完美实现Android沉浸式效果,资源博文地址:http://blog.youkuaiyun.com/jaynm/article/details/78719423 立即下载

相关推荐

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 288

Android 实现沉浸式状态栏(包含顶部栏吸顶Layout CoordinatorLayout实现沉浸式状态栏)

Android状态栏默认是固定的黑底白字,这肯定是不被伟大的设计师所喜爱的,更有甚者,某些时候设计希望内容能够延伸到状态栏上部(例如顶部是大图的情况)。参数二:沉浸状态栏的颜色),这样就实现了CoordinatorLayout的沉浸式状态栏,如以下视频(这里的沉浸状态栏的颜色设置的完全透明,上滑的时候会渐变至纯白色)。在项目的build.gradle下的repositories添加(新版本Android Studio创建的项目是在settings.gradle下的repositories),并同步项目。

UrasakiNakajima的博客 9653

SAP CKMLCP 月结7大常见报错:从“未找到成本核算运行”到“物料占用”的完整解决方案

本文深入解析SAP CKMLCP月结过程中的7大常见报错,从权限问题到数据一致性错误,提供系统化的解决方案。重点解决'未找到成本核算运行'和'物料占用'等典型问题,帮助财务人员高效完成成本核算月结,确保数据准确性。

weixin_30299709的博客 417

Android Studio实现沉浸状态栏【Kotlin】

这里先讲一下沉浸状态栏实现的原理,我看了不少教程,很多都是在讲如何让状态栏跟随页面内容改变颜色,想要以改变状态栏颜色的方式实现沉浸状态栏。可以发现,不管控件是什么颜色,都能在状态栏中显示。因为我们已经改变了ui的显示方式,让ui能够显示到屏幕的最顶端,同时设置了状态栏透明色,使得任何控件都能在状态栏中显示,从而实现了沉浸状态栏。小白在开发一个app的时候,总是会发现状态栏颜色和app不一致,虽然不影响功能的使用,但看着却十分难受,所以来讲一下如何实现沉浸状态栏。

m0_45392444的博客 824

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2579

保姆级教程:一步步创建 ABAP Text Table

有朋友反馈,问有没有一个自己动手创建 Text Table 的例子,因为自己没有动手实践过,总觉得心里不踏实。这个行为的语义是,ZAI_TYPE_T 这张表的 AI_TYPE 字段值,不能随便维护,必须是表。然后另一个需要添加的字段是 AI_TYPE 这个字段值对应的文本值,本例笔者采用 SAP 标准的。也是自己创建的,很简单的一个 Data Element,类型为 CHAR,长度为 2.依次给主表的 01,02,03 三个字段值维护对应的描述信息,最后效果如下。按照下面的字段结构,创建另一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4278

十行代码实现 沉浸式透明状态栏+隐藏标题栏

1.res/styles设置为 <style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark"...

HoukHan的博客 1042

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2997

沉浸式状态栏需要写html,沉浸式状态栏

android Api21之后的状态栏会默认覆盖半透明遮罩,我们需要新建values-19,values-21 2份styles文件进行适配Api-19truetrueApi-21falsetrue@android:color/transparent02dcb82d382be8e958a4245dee2465d.jpg假如需要去除状态栏需要在Activity中添加getWindow().setFl...

weixin_33046149的博客 399

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1486

Ardupilot无人船(车)mavros自主控制

rover 4.4。

超维空间科技的博客 3231

沉浸式状态栏html5实现,Fragment和Activity两种沉浸式状态栏的实现

我们普通的Activity所有的标题栏颜色风格基本是一致的,所以我们可以将这种单独的Activity的沉浸式状态栏放在BaseActivity中实现。但是如果遇到一级栏目的fragment中,且有些fragment中有图片我们该如何处理呢?先看图 解决方法:1.普通的Activity我们采用github上的库放在BaseActivity来实现.2.Activity的fragment我们对其每个f...

weixin_42187923的博客 544

基于STM32L4XX、HAL库的MAX13487EESA RS485总线收发器驱动程序设计

MAX13487EESA是一款3.3V供电的RS-485/RS-422收发器,由Maxim Integrated生产。PA4 (控制引脚) ---> /RE, DE (连接在一起)具有±15kV ESD保护的驱动器输出和接收器输入。半双工RS-485/RS-422通信。工业温度范围:-40°C至+85°C。工作电压范围:3.0V至3.6V。数据速率高达250kbps。

zhusl6688的博客 690

一行代码搞定状态栏歌词:ImmersionBar+自定义View实现沉浸式音乐体验

你是否还在为音乐APP的状态栏歌词显示问题烦恼?明明精心设计的歌词UI,却被系统状态栏遮挡一半?本文将带你用ImmersionBar框架结合自定义View,3步实现完美贴合状态栏的歌词滚动效果,让歌词显示突破系统限制,打造真正沉浸式的音乐体验。 读完本文你将获得: - 状态栏歌词显示的完整技术方案 - ImmersionBar沉浸式状态栏核心配置 - 自定义歌词View的滚动与绘制技巧 - 适配...

gitblog_00336的博客 911

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android - 沉浸式状态栏

** 设置沉浸式状态栏 */

2401_87195843的博客 1805

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

沉浸式状态栏

最近在搞沉浸式的状态栏,网上浏览了一遍,看过很多优秀的博主写的很多的方法,下面跟大家安利一种我觉得比较快捷简便的方法。所谓沉浸式说白了就是将状态栏透明化,或者隐藏,以此来增加用户的使用体验。因为要复用这个状态栏,所以我把它写进了工具类,上面注释的逻辑很清晰,我就不再多说了。这期的分享就到这里,人生就是不断地学习总结,我是小白,再会。

m0_66376030的博客 350

WanAndroidClient沉浸式状态栏详解:ImmersionBar一行代码搞定全屏效果

WanAndroidClient 是一款基于 Kotlin + MVP + 协程 开发的「玩 Android」技术社区客户端,支持首页文章浏览、知识体系专题、热词搜索、收藏点赞等功能。它最让人眼前一亮的细节之一,就是**沉浸式状态栏**效果——标题栏一直延伸到屏幕最顶部,视觉上没有割裂感。本文带你看它如何用 [ImmersionBar](https://link.gitcode.com/i/ce4

gitblog_00171的博客 363

android悬顶效果实现简书,android:一行代码实现沉浸式布局效果

先看效果效果一:20170208160944467.png效果二:20170208161011359.png首先要引入statusbaruitl库```compile 'com.jaeger.statusbaruitl:library:1.3.5'```在Activity中一行代码实现://目的是让状态栏全透明StatusBarUtil.setTransparent(MainActivity.th...

weixin_39834780的博客 240

ImmersionBar使用教程:Android沉浸式状态栏和导航栏管理

ImmersionBar是一个强大的Android库,专门用于简化Android 4.4及以上版本的状态栏和导航栏沉浸式设计。它支持横竖屏切换、刘海屏适配、软键盘弹出等复杂场景,并允许开发者灵活定制状态栏和导航栏的颜色、透明度等样式。 ## 项目介绍 ImmersionBar由gyf-dev开发,是一个高度兼容的沉浸式状态栏解决方案。该库支持Activity、Fragment、DialogFr

gitblog_00661的博客 1247

Android:状态栏沉浸式体验

直接上代码: 什么都不用改,直接粘粘即可。 public static void makeStatusBarTransparent(Activity activity) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return; } Window window = activity.getWindow(); if (Build.VE

Grasslight的博客 199

android 沉浸式的实现

一行代码实现头部沉浸式: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); }注意这里先要获取系统版本只有大于api level 19的时候才会

曲洋的博客 424

如何快速实现Android沉浸式界面:ImmersionBar完全指南

ImmersionBar是一款专为Android 4.4及以上系统设计的沉浸式状态栏和导航栏管理库,能够轻松解决横竖屏切换、刘海屏适配、软键盘弹出等常见问题,支持Activity、Fragment、Dialog等多种组件,一句代码即可实现完美的沉浸式体验。 ## 📌 为什么选择ImmersionBar? 在移动应用开发中,沉浸式界面设计已成为提升用户体验的关键因素。ImmersionBar作

gitblog_00667的博客 1133

android:一行代码实现沉浸式布局效果

先看效果 效果一: 效果二: 首先要引入statusbaruitl库 compile 'com.jaeger.statusbaruitl:library:1.3.5'1 在Activity中一行代码实现: //目的是让状态栏全透明 StatusBarUtil.setTransparent(MainActivity.this);12 这样当前A

qq_41138470的博客 301

android 沉浸式状态栏

博客原文:http://www.jcodecraeer.com/a/opensource/2017/0526/7976.html github地址:https://github.com/gyf-dev/ImmersionBar 介绍: android 4.4以上沉浸式状态栏和沉浸式导航栏管理,一句代码轻松实现,以及对bar的其他设置 运行效果: 使用说明: ...

weixin_30851409的博客 256

SlidingMenu + 沉浸式 无法实现终极沉浸式状态栏的解决方法

前段时间做项目 用到了因为SlidingMenu发现SlidingMenu无法实现沉浸式状态栏 ,看了源码才发现 要实现SlidingMenu沉浸式状态栏 只需要把SlidingMenu.java源码里的一个状态修改下!private boolean mActionbarOverlay = false; 修改为:private boolean mActionbarOverlay = true;...

Gybk123的博客 403
上一篇: Exeution failed for task 解决方案
下一篇: Android Studio 更新 gradle 一直在build的解决方案
coder_e
博客等级 码龄10年 6粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值