Android Fragment 实现状态栏透明(沉浸式)
来两张效果图对比一下
第一张图是实现了透明状态栏的效果,第二张图是未实现透明状状态栏。如果还看不出区别,那么请打开手机淘宝和任一手机银行App对比顶部的颜色。
现在好多手机已经是全面屏了,如果我们的应用在顶部还是多出来这么一块黑条,那多不美观啊(APP 主题色是黑色的略过)
那么如何实现?我这里由于项目集成了 statusbarutil
所以直接就参考了他例子中的代码来实现了。
StatusBarUtil 地址
StatusBarUtil 在 Fragment 使用
实现
- 导包
compile 'com.jaeger.statusbarutil:library:1.4.0'
- 设置
NoActionBar
的主题( 我这里实现了右滑返回,所以设置背景为透明)
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="android:textAllCaps">false</item><item name="android:windowActionBar">false</item><item name="windowActionBar">false</item><item name="android:windowAnimationStyle">@style/AnimationActivity</item><item name="windowNoTitle">true</item><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:windowIsTranslucent">true</item><item name="android:windowBackground">@android:color/transparent</item></style>
- 区别不同版本对待
新建一个res/values-v19
目录,在目录下创建一个dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources><!-- Default screen margins, per the Android Design guidelines. --><dimen name="statusbar_view_height">25dp</dimen>
</resources>
在原先的res/values
目录下的dimens.xml
也添加statusbar_view_height
<dimen name="statusbar_view_height">0dp</dimen>
- 给头部带去一些色彩
我这里是首页实现 透明状态栏,而首页是由一个 Activity + 4 个 Fragment 组成的。这里我们只需要将
Activity
状态栏透明即可,在Fragment
中可动态设置是否需要透明状态栏。
比如我的首页,顶部是显示图片,我想它顶部状态栏要透明,可以这么做。
第一步:在布局文件的顶部加上<LinearLayout></LinearLayout>
中的控件
<android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><android.support.design.widget.CollapsingToolbarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"app:contentScrim="@color/colorPrimary"app:layout_scrollFlags="scroll|exitUntilCollapsed"><com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="match_parent"android:layout_height="200dp"app:layout_scrollFlags="scroll|snap"app:layout_collapseMode="parallax" /><android.support.v7.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"app:layout_collapseMode="pin"app:contentInsetStart="0dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><Viewandroid:id="@+id/fake_status_bar"android:layout_width="match_parent"android:layout_height="@dimen/statusbar_view_height"android:background="@color/colorPrimary"/><TextViewandroid:id="@+id/search_layout"android:layout_width="match_parent"android:layout_height="wrap_content"android:minHeight="40dp"android:gravity="center"android:hint="@string/search_hint_txt"android:paddingStart="10dp"android:paddingEnd="10dp"android:background="@drawable/home_search_bg_shape"/></LinearLayout></android.support.v7.widget.Toolbar></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout>
id
为fake_status_bar
的View
控件是为了适配顶部的状态栏
id
为search_layout
的View
控件是顶部的搜索框
第二步:在 fragment 中再设置状态栏的颜色为透明
// 透明顶部
setTvTitleBackgroundColor(Color.TRANSPARENT);public void setTvTitleBackgroundColor(@ColorInt int color) {fakeStatusBar.setBackgroundColor(color);
}
再比如我的其他页面顶部只想显示 App 的主题色,可以这么做。
直接在布局文件中设置 id
为fake_status_bar
控件的背景色为主题色即可。
<LinearLayoutandroid:id="@+id/layout_toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><Viewandroid:id="@+id/fake_status_bar"android:layout_width="match_parent"android:layout_height="@dimen/statusbar_view_height"android:background="@color/colorPrimary"/><TextViewandroid:id="@+id/tv_project_toolbar"android:layout_width="match_parent"android:layout_height="?actionBarSize"android:text="我是 Toolbar "android:textColor="@color/white"android:textSize="18sp"android:gravity="center"android:background="@color/colorPrimary"/></LinearLayout>
喜欢文章的话点下文章底部小心心
本文完,欢迎你留言讨论。
Android Fragment 实现状态栏透明(沉浸式)相关推荐
- android透明度大全,状态栏大全-状态栏透明(沉浸式)、变色及全屏的区别
手机的顶部状态栏,也就是信号.电量那条,有4种状态,分别是正常.变色.透明(也称沉浸式状态栏).消失(也就是全屏). 后3种特殊用法,具体见下: 状态栏变色 常见使用场景:如果title背景为纯色且显 ...
- android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...
Android 5.0(API 21)之后就可以对系统状态栏进行设置了,这里我不是想深入讨论对系统状态栏的一些高级设置,因为一般也用不到,我只想说最常见的两种场景 隐藏系统状态栏,这就是感觉很牛逼的沉 ...
- 状态栏大全-状态栏透明(沉浸式)、变色及全屏的区别
手机的顶部状态栏,也就是信号.电量那条,有4种状态,分别是正常.变色.透明(也称沉浸式状态栏).消失(也就是全屏). 后3种特殊用法,具体见下: 状态栏变色 常见使用场景:如果title背景为纯色且显 ...
- (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏
目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...
- Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)
根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...
- android 4.4 以上沉浸式状态栏和沉浸式导航栏管理,一句代码轻松实现
ImmersionBar 项目地址:gyf-dev/ImmersionBar 简介:android 4.4 以上沉浸式状态栏和沉浸式导航栏管理,一句代码轻松实现,以及对 bar 的其他设置,详见 R ...
- Android --- 详细介绍透明式状态栏和沉浸式状态栏
今天来写一个类似于qq空间的那种沉浸式效果.先来看看qq空间的这种效果 我们看到,头部局上拉的时候有个头布局的透明是从0变化到1,当你下拉的时候,头部局透明度又从1变化到0了.始终效果看起来还是不错的 ...
- 2022-10-13 Android APP 全屏幕显示全透明沉浸式主题android:theme样式 Theme.TranslucentTheme
一.android8真机上运行默认的app主题是这样的,有titile,状态栏不透明. 二.我想改成全透明沉浸式主题样式. 1.res/values/themes.xml 文件添加Translucen ...
- android 工具栏沉浸 下拉,如何在Android应用中实现一个沉浸式状态栏效果
如何在Android应用中实现一个沉浸式状态栏效果 发布时间:2020-12-08 17:04:42 来源:亿速云 阅读:151 作者:Leah 这篇文章将为大家详细讲解有关如何在Android应用中 ...
最新文章
- 新思科技Chekib:AI芯片架构创新面临四大挑战
- ASP.NET(C#)常用数据加密和解密方法汇总
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](3)
- node工程默认url_node 爬虫入门实例,简单易懂
- wordpress 后台404解决办法
- Java性能最后一个领域:去除垃圾回收器
- HDU 5834 Magic boy Bi Luo with his excited tree 树形DP
- [Luogu P2801]教主的魔法
- Servlet编写登陆页面简单实践
- 设计模式演练——工厂方法模式
- Python实现鸢尾花数据集分类问题——使用LogisticRegression分类器
- 联想台式计算机编号怎么查,联想台式机主机编号怎么查询
- java中竖线怎么画_java split | (竖线)
- 创新设计思维——做出好产品的艺术
- Protocol handler start failed
- ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
- DIY一台键盘主机,有点点Raspberry Pi 400那味了
- 致终将火爆的NFC——ISO14443 TypeA(一)
- python拟合非线性模型_python-绘制分段拟合到非线性数据
- 使用MCGS触摸屏与单片机通讯的心得