Android沉浸式状态栏设计的实例代码
作者:临窗听雨 发布时间:2023-11-14 13:03:14
标签:android,沉浸式状态栏
本文介绍了android沉浸式状态栏,分享给大家,希望对大家有帮助
一、概述
现在主流的App设计风格很多都用到了Materail Design,今天我们就来简单的实现一下改变状态栏颜色、让状态栏透明这两种效果。
二、实现状态栏设置颜色
我们写一个工具类StatusBarUtils
代码如下:
/**
* 设置状态栏颜色
*
* @param activity
*/
public static void setStatusColor(Activity activity, int color) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
//直接调用系统提供的方法 setStatusBarColor
activity.getWindow().setStatusBarColor(color);
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
// 4.4 - 5.0 之间 采用一个技巧,首先把他弄成全屏,在状态栏的部分加一个布局
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
View view = new View(activity);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusbarHeight(activity));
view.setLayoutParams(params);
view.setBackgroundColor(color);
ViewGroup viewGroup = (ViewGroup) activity.getWindow().getDecorView();
viewGroup.addView(view);
// 获取activity中setContentView布局的根布局
ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
View activityView = contentView.getChildAt(0);
activityView.setFitsSystemWindows(true);
}
}
private static int getStatusbarHeight(Activity activity) {
Resources resources = activity.getResources();
int statusHeightId = resources.getIdentifier("status_bar_height", "dimen", "android");
return resources.getDimensionPixelOffset(statusHeightId);
}
在Android5.0以上直接调用系统提供的方法 setStatusBarColor,4.4-5.0之间,首先弄成全屏,然后在状态栏的部分加一个布局。
三、设置状态栏透明
代码:
public static void setActivityTranslucent(Activity activity) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
代码就这么多,分析完毕,效果大家可以自己去试一试,我这就不上图了。
来源:http://www.jianshu.com/p/aca6707f3ca2?utm_source=tuicool&utm_medium=referral
0
投稿
猜你喜欢
- JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str
- 一. 概述参考开源项目https://github.com/xkcoding/spring-boot-demo在系统运维中, 有时候为了避免
- 上一篇文章已经介绍了如何为RecyclerView添加FootView,在此基础上,要添加分页加载的功能其实已经很简单了。 上一篇文章地址:
- 问题背景能准确说出下面的java 执行完毕后会打印出什么? System.out.println(
- 需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的I
- Common.cs: using System; using System.Collections.Generic; using Syste
- 目录1、Java内存模型2、硬件内存架构3、实际执行3.1 共享对象可见性3.2 竞争条件Java是一门支持多线程执行的语言,要编写正确的并
- 一、Hash加密,使用HashAlgorithm哈希算法类的派生类(MD5、SHA1等)特点:只能加密,不可逆。可对目标信息生成一段特定长度
- 前言本文主要介绍其具体的实现思路(视频仅有代码输入,并无过程介绍等),同时,在原本实现的基础上,进行了多处修改和优化,具体参见下面的内容。优
- Shiro介绍Shiro是一款安全框架,主要的三个类Subject、SecurityManager、RealmSubject:表示当前用户S
- 写在前面: 线程堆栈应该是多线程类应用程序非功能问题定位的最有效手段,可以说是杀手锏。线程堆栈最擅长与分析如下类型问题:系统无缘无故CPU过
- springboot远程debug调试1.首先去编辑器打开项目2.打开Edit Configurations 选择remote选项
- 我们开发一个Spring Boot项目,肯定要导入许多的静态资源,比如css,js等文件如果我们是一个web应用,我们的main下会有一个w
- 1.先看源码文档/** * Indicates that an annotation type is automatically inher
- 本文实例讲述了Java使用synchronized实现互斥锁功能。分享给大家供大家参考,具体如下:代码package per.thread;
- using System;using System.Collections.Generic;using System.Linq;using
- > 此文主要通过WinForm来制作一个休息提醒闹钟,通过设置时间间隔进行提醒,避免沉浸式的投入到工作或者学习当中,战斗的同时也要照顾
- 使用正则表达式,效率较高public boolean canParseInt(String str){if(str == null){ //
- 1、一次性添加多行注释的快捷键首先选中要注释区域,然后ctrl+/ 这个是多行代码分行注释,每行一个注释符号ctrl+shift+/ 这个是
- Java常用类包装类由于Java语言中的基本类型不是面向对象,并不具备对象的性质,实际使用存在很多不便。Java在java.lang包中提供