求助怎么使手机里的所有第三方app状态栏webapp 沉浸式状态栏

安卓开发中怎样设置沉浸式状态栏_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
安卓开发中怎样设置沉浸式状态栏
这个特性是andorid4.4支持的,最少要api19才可以使用。下面介绍一下使用的方法,非常得简单:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
//透明状态栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);只要加入这两行代码,就可以实现沉浸式通知栏了。给大家看看这个界面的布局:
&linearlayout android:background=&#ffffff& android:cliptopadding=&true& android:fitssystemwindows=&true& android:layout_height=&match_parent& android:layout_width=&match_parent& android:orientation=&vertical& tools:context=&.MainActivity& xmlns:android=&& xmlns:tools=&&&&textview android:background=&#009959& android:layout_height=&100dp& android:layout_width=&match_parent&&&button android:background=&#ff669d/& android:layout_height=&50dp& android:layout_width=&100dp&&&/button&&/textview&&/linearlayout&大家看红色的那部分,加入那两行以后,界面仍然会是沉浸式的,但状态栏那部分,就不会再重叠了,像加了padding一样,如下图:大家看图,绿色的textView和红色的一个button都被下移了,状态栏是白色的,是背景linearLayout的颜色。很明显,这也不是我们想要的,我们希望状态栏和我们放在顶部的控件是同一个颜色,同时,控件内容也不和状态栏重复,其实,只要把那两行代码放到我们顶部的控件就可以了。代码如下:&linearlayout android:background=&#ffffff& android:layout_height=&match_parent& android:layout_width=&match_parent& android:orientation=&vertical& tools:context=&.MainActivity& xmlns:android=&& xmlns:tools=&&&&textview android:background=&#009959& android:cliptopadding=&true& android:fitssystemwindows=&true& android:layout_height=&100dp& android:layout_width=&match_parent& android:text=&你好,请问你有男朋友吗/&&&button android:background=&#ff669d/& android:layout_height=&50dp& android:layout_width=&100dp&&&/button&&/textview&&/linearlayout&就是那两行红色的代码,放在绿色的textView上,这样,就会是下面的效果: 这就是我们想要的了。
为您推荐:
其他类似问题
您可能关注的内容
身份证的相关知识
换一换
回答问题,赢新手礼包17被浏览2541分享邀请回答/preview/material/theme.html#colorpalette),这也就是为什么目前还只有很少一部分应用实现了变色龙状态栏的原因。在Android L中提供了Material Theme的支持,从而才有了在L中的变色龙状态栏。如果你使用的是Android L,第三方APP只要去实现官方提供的主题样式,并进行相应的匹配就可以实现了,具体参考官方实现文档,就是上面这个链接。PS:对于Android来说,修改主题,也就是&style name="AppTheme" parent="android:Theme.Material"&,这个参数可能导致原来设计的应用的UI界面产生非常大的变化,修改起来可能会有些复杂(说实在如果你以前是按照谷歌设计规范做的应用就完全没有这个烦恼了,但是很多都不遵守)因此,我个人认为Android中第三方APP变色龙的实现还需不少的时间。35 条评论分享收藏感谢收起0添加评论分享收藏感谢收起后使用快捷导航没有帐号?
平板/笔记本
云服务专区
第三方音乐app不支持状态栏沉浸?可自己动手实现(更新)
&炉火纯青&
来自:浏览器
本帖最后由 翔子1024 于
13:57 编辑
之前在参加内侧时,就发现,第三方音乐app本来在emui3.0时支持状态栏沉浸到3.1时就不沉浸了,反馈给官方,到目前为止还未解决。现在已经不指望官方在3.1版本中能改过来了,不过可以通过自己动手实现,大部分教程可以在论坛上都能找的到,这里就不详细描述了,我只是搬运工,整理一下,大致步骤如下:
& && & 一、手机必须先解锁,解锁教程在这里
(感谢琼霄舞风云)
& && & 二、刷入第三方REC【一般发布第三方ROM包的帖子里都有教程,这里就不添加链接了】
& && & 三、刷入第三方带有ROOT的ROM包【官方的ROOT后在刷入Xposed时基本上都会卡在开机界面而无法刷入】
& && & HRT-Kangvip:基于B851包 (感谢 HRT-Kangvip)
& && & P7电信版:(V1版)& &(V3版)
& && & P7移动版:(V1版)& &(V3版)
& && & P7联通版:(V1版)& &(V3版)
& && & HRT-KillProcess:基于B851包 (感谢 HRT-KillProcess)
& && & P7电信版:
& && & P7移动版:
& && & P7联通版:
& && & 其它的就不一一整理出来了【如果已经刷入第三方ROM包,以上步骤可以忽视】
& && & 四、刷入Xposed框架及萝莉状态栏,教程在这里【里面还推荐使用虚拟导航键,还不错】
(感谢 沩昵迩笙)
& && & 五、到这里(设置萝莉状态栏后,如下图)基本上就大功告成了,进入第三方音乐首页,看起来是沉浸的,But。。。
Screenshot_-17-00-14.png (150.13 KB, 下载次数: 25)
18:48 上传
& &&&但是进入第三方音乐app歌词界面后发现,状态栏颜色虽然可以随着图片的变化而改变,但并不是我们想要的效果(如下图,这里以酷狗音乐为例)
QQ截图1.jpg (77.8 KB, 下载次数: 26)
18:50 上传
& &&&这时候需要我们再进一步设置,这里仍以酷狗音乐为例,其它音乐软件大同小异,应该也没问题(帖子沉的好快,So,大家懂的)
& & 游客,如果您要查看本帖隐藏内容请
& & 这样就大功告成了,现在看下酷狗音乐的效果
QQ截图3.jpg (64.5 KB, 下载次数: 29)
19:11 上传
QQ截图4.jpg (79.35 KB, 下载次数: 23)
19:11 上传
& &&&在看看其他app(应用)的效果是不是会有所变化,就不伪沉浸了呢(答案是否定的,如下图)
QQ截图5.jpg (69.55 KB, 下载次数: 32)
19:11 上传
QQ截图6.jpg (104.5 KB, 下载次数: 52)
19:11 上传
& & 那么会不会像emui3.0时一样,用了xposed框架后主题就不能用了呢,答案也是否定的,如下图
QQ截图7.jpg (92.13 KB, 下载次数: 32)
19:47 上传
& & 到这里就结束了。。。新手第一次发这么长的贴,请多多支持,谢谢!
& &日更新:
& &按上述方法使用萝莉状态栏时,有以下缺陷:
& &1、blurwallpaper底色为非黑色时,某些界面不实现沉浸,如下图
initpintu_副本.jpg (68.52 KB, 下载次数: 14)
13:19 上传
& &2、当状态栏底色为白色时,状态栏上的图标不全部变黑色,影响美观,如下图
Screenshot_-12-02-39.png (122.86 KB, 下载次数: 11)
13:19 上传
& &现在在论坛上发现有更好的模块可以实现更完美的沉浸,能够解决以上两缺陷,请参考这里
& &&&(感谢小小合)
& &步骤很简单,如下:
& &1、按之前方法装入xposed框架(如果已经装了萝莉状态栏,直接卸载它即可)
& &2、下载perfectcolorbar,下载地址见上面提供的链接,解压安装perfectcolorbar.apk,按下图勾选perfectcolorbar模块,重启手机激活模块。
Screenshot_-12-04-08.png (169.02 KB, 下载次数: 14)
13:19 上传
& &3、进入perfectcolorbar应用,进行设置,如下图
游客,如果您要查看本帖隐藏内容请
& &这样就大功告成了,看看效果:
& &之前不沉浸的界面现在已经沉浸:
initpintu_副本1.jpg (66.53 KB, 下载次数: 17)
13:19 上传
& &状态栏上的图标全部变色了:
Screenshot_-12-12-31.png (126.79 KB, 下载次数: 12)
13:19 上传
& &酷狗音乐等第三方APP照样是透明沉浸:
未命名_副本1.jpg (68.24 KB, 下载次数: 17)
13:19 上传
& &提示:如果perfectcolorbar影响了某个程序的原沉浸效果,可以将这个程序加入perfectcolorbar的黑名单,则perfectcolorbar将不会影响这个程序。。。
好赞~鼓掌~
width:100%">
&炉火纯青&
来自:浏览器
这样就发表成功了吗,自顶一下
width:100%">
&自成一派&
来自:浏览器
width:100%">
&渐入佳境&
来自:浏览器
支持一下。
width:100%">
&略有小成&
来自:浏览器
楼主怎么吧状态栏时间显示调换,求教。
width:100%">
&炉火纯青&
来自:浏览器
轻湛浅醉 发表于
楼主怎么吧状态栏时间显示调换,求教。
你是说时间居中吗?我是刷了kangvip的包,高级设置里面有
width:100%">
&炉火纯青&
来自:浏览器
这么冷清,看来对这个需求不大
width:100%">
&独步江湖&
来自:浏览器
kangvip的包用着效果如何?
width:100%">
&炉火纯青&
来自:浏览器
Jun临天下 发表于
kangvip的包用着效果如何?
还行,没出现什么bug,但耗电是通病。。。
width:100%">
&自成一派&
来自:浏览器
width:100%">
老茶馆众生随拍:黑煤球的业余生活红枫《川西高原》潜伏墨荷墨荷
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
关注花粉俱乐部
举报邮箱:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利已使用透明主题,但是qq微博贴吧等等有一些app还是没办法沉浸,问一下看怎样可以全部都变成沉浸的
来自 vivo乐园
软件自身不支持,,,,
来自 vivo乐园
已使用透明主题,但是qq微博贴吧等等有一些app还是没办法沉浸,问一下看怎样可以全部都变成沉浸的 ...
咳咳,科普一下哈,那个沉浸和透明状态栏是两种观念,你说的是透明状态栏,沉浸状态栏你看着会不习惯的!OK没
来自 vivo乐园
咳咳,科普一下哈,那个沉浸和透明状态栏是两种观念,你说的是透明状态栏,沉浸状态栏你看着会不习惯的! ...
我知道,但是用了透明主题有些app确实可以沉浸
来自 vivo乐园
已使用透明主题,但是qq微博贴吧等等有一些app还是没办法沉浸,问一下看怎样可以全部都变成沉浸的 ...
软件自身不支持。
来自 vivo乐园
我知道,但是用了透明主题有些app确实可以沉浸
好吧,,,透明状态栏真心好看。不过vivo就别指望了?
来自 vivo乐园
软件自身不支持。
我知道,但是就问一下看怎样就支持了
来自 vivo乐园
我知道,但是就问一下看怎样就支持了
那需要改写程序呦。
来自 vivo乐园
24小时全国服务热线
400-678-9688
公众号:vivo智能手机
生活号:vivo智能手机
公众号:vivo智能手机
生活号:vivo智能手机
保存二维码android沉浸式状态栏封装—教你玩出新花样第二种方案:将布局延伸到状态栏来处理,这次我们使用:fitsSystemWindows=”true”属性,不让布局延伸到状态栏,这时状态栏就是透明的,然后添加一个和状态栏高、宽相同的指定颜色View来覆盖被透明化的状态栏。我们一步步来实现。1、第一步还是先将状态栏透明化,方法同上。2、在布局文件中添加android:fitsSystemWindows=”true”属性:封装:ImmersionBar.with(this)
.transparentStatusBar()
//透明状态栏,不写默认透明色
.transparentNavigationBar()
//透明导航栏,不写默认黑色(设置此方法,fullScreen()方法自动为true)
.transparentBar()
//透明状态栏和导航栏,不写默认状态栏为透明色,导航栏为黑色(设置此方法,fullScreen()方法自动为true)
.statusBarColor(R.color.colorPrimary)
//状态栏颜色,不写默认透明色
.navigationBarColor(R.color.colorPrimary) //导航栏颜色,不写默认黑色
.barColor(R.color.colorPrimary)
//同时自定义状态栏和导航栏颜色,不写默认状态栏为透明色,导航栏为黑色
.statusBarAlpha(0.3f)
//状态栏透明度,不写默认0.0f
.navigationBarAlpha(0.4f)
//导航栏透明度,不写默认0.0F
.barAlpha(0.3f)
//状态栏和导航栏透明度,不写默认0.0f
.statusBarDarkFont(true)
//状态栏字体是深色,不写默认为亮色
.flymeOSStatusBarFontColor(R.color.btn3)
//修改flyme OS状态栏字体颜色
.fullScreen(true)
//有导航栏的情况下,activity全屏显示,也就是activity最下面被导航栏覆盖,不写默认非全屏
.hideBar(BarHide.FLAG_HIDE_BAR)
//隐藏状态栏或导航栏或两者,不写默认不隐藏
.addViewSupportTransformColor(toolbar)
//设置支持view变色,可以添加多个view,不指定颜色,默认和状态栏同色,还有两个重载方法
.titleBar(view)
//解决状态栏和布局重叠问题,任选其一
.statusBarView(view)
//解决状态栏和布局重叠问题,任选其一
.fitsSystemWindows(true)
//解决状态栏和布局重叠问题,任选其一,默认为false,当为true时一定要指定statusBarColor(),不然状态栏为透明色
.supportActionBar(true) //支持ActionBar使用
.statusBarColorTransform(R.color.orange)
//状态栏变色后的颜色
.navigationBarColorTransform(R.color.orange) //导航栏变色后的颜色
.barColorTransform(R.color.orange)
//状态栏和导航栏变色后的颜色
.removeSupportView(toolbar)
//移除指定view支持
.removeSupportAllView() //移除全部view支持
.navigationBarEnable(true)
//是否可以修改导航栏颜色,默认为true
.navigationBarWithKitkatEnable(true)
//是否可以修改安卓4.4和emui3.1手机导航栏颜色,默认为true
.fixMarginAtBottom(true)
//当xml里使用android:fitsSystemWindows="true"属性时,解决4.4和emui3.1手机底部有时会出现多余空白的问题,默认为false,非必须
.addTag("tag")
//给以上设置的参数打标记
.getTag("tag")
//根据tag获得沉浸式参数
//重置所以沉浸式参数
.keyboardEnable(true)
//解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode
//必须调用方可沉浸式使用方式第一步:基础用法(已经可以满足日常沉浸式)ImmersionBar.with(this).init();第二步在activity的onDestroy方法中执行ImmersionBar.with(this).destroy(); //不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态建议 建议在BaseActivity中初始化和销毁,可以参看demo中
public class BaseActivity extends AppCompatActivity { private ImmersionBar mImmersionB
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mImmersionBar = ImmersionBar.with(this);
mImmersionBar.init();
//所有子类都将继承这些相同的属性
@Override protected void onDestroy() {
super.onDestroy();
mImmersionBar.destroy();
//不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态
} }如何 隐藏导航栏或状态栏/**
* 隐藏导航栏或状态栏
* @param barHide the bar hide
* @return the immersion bar
*/ public ImmersionBar hideBar(BarHide barHide) {
mBarParams.barHide = barH
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT || OSUtils.isEMUI3_1()) {
if ((mBarParams.barHide == BarHide.FLAG_HIDE_NAVIGATION_BAR) ||
(mBarParams.barHide == BarHide.FLAG_HIDE_BAR)) {
mBarParams.navigationBarColor = Color.TRANSPARENT;
mBarParams.fullScreenTemp =
mBarParams.navigationBarColor = mBarParams.navigationBarColorT
mBarParams.fullScreenTemp =
}部分问题解决华为emui3.0或者3.1手机手动隐藏导航栏按钮时,导航栏背景未被隐藏的问题什么叫做手动隐藏,就是下图中标红的向下隐藏按钮 第一种解决方案,监听华为虚拟按钮,建议在baseActivity里使用@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
immersionBar = ImmersionBar.with(this);
immersionBar.init();
if (OSUtils.isEMUI3_1())
//解决华为emui3.0与3.1手机手动隐藏底部导航栏时,导航栏背景色未被隐藏的问题
getContentResolver().registerContentObserver(Settings.System.getUriFor
("navigationbar_is_min"), true, mNavigationStatusObserver);
private ContentObserver mNavigationStatusObserver = new ContentObserver(new Handler()) {
@Override public void onChange(boolean selfChange) {
int navigationBarIsMin = Settings.System.getInt(getContentResolver(),
"navigationbar_is_min", 0);
if (navigationBarIsMin == 1) {
//导航键隐藏了
immersionBar
.transparentNavigationBar()
//导航键显示了
immersionBar
.navigationBarColor(android.R.color.black)
.fullScreen(false)
};第二种解决方案,禁止对导航栏相关设置ImmersionBar.with(this)
.navigationBarEnable(false)
//禁止对导航栏相关设置 //或者 // .navigationBarWithKitkatEnable(false)
//禁止对4.4设备导航栏相关设置
.init();android 6.0 有导航栏效果项目地址:gyf-dev的博客地址:博客地址:如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 : 微信公众号:终端研发部aHR0cDovL3dlaXhpbi5xcS5jb20vci9KemdISDZQRXB2N1pyZWQ4OTIwMQ== (二维码自动识别)0收藏分享举报文章被以下专栏收录推荐阅读{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&&,&permission&:&COLUMN_PUBLIC&,&memberId&:,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&&,&urlToken&:&c_&,&id&:33455,&imagePath&:&4b70deef7&,&slug&:&c_&,&applyReason&:&0&,&name&:&Android交流研发部&,&title&:&Android交流研发部&,&url&:&https:\u002F\\u002Fc_&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:34,&avatar&:{&id&:&4b70deef7&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\\u002F4b70deef7_l.jpg&,&articlesCount&:11},&state&:&accepted&,&targetPost&:{&titleImage&:&&,&lastUpdated&:,&imagePath&:&&,&permission&:&ARTICLE_PUBLIC&,&topics&:[,1739],&summary&:&项目中我们有时候都要用的透明状态栏(这里也成沉浸式状态栏),今天介绍一个gyf-dev写的一个封装状态栏开源框架效果图如下: 正文从Android4.4开始,才可以实现状态栏着色,并且从5.0开始系统更加完善了这一功能。之前写过关于一篇 关于activity状态栏的一…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T17:54:32+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:3485987,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&android沉浸式状态栏封装—教你玩出新花样&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:33455,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&&,&author&:{&bio&:&微信公众号:终端研发部 ,每天一篇技术分享,关注我学习更多&,&isFollowing&:false,&hash&:&85f141eeede82&,&uid&:958000,&isOrg&:false,&slug&:&codegoogler.develope&,&isFollowed&:false,&description&:&关注我(微信公众号:终端研发部)走在前技术领域的最前沿,打造一个最受欢迎的学习渠道,带你一起升华技术,还有职场经验,互联网+最新动态。\n职场中我与你闲扯技术,生活中笑谈科技人生。以幽默诙谐的态度,面对乏味无聊的技术,用扯淡的方式,分享技术的内涵。 同时探索对码农的思考引导你做一个跨越思维的程序员。更重要的是这里还有诗和远方。&,&name&:&终端研发部&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fcodegoogler.develope&,&avatar&:{&id&:&v2-a29fbcba5f4f674a5f22da&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:747030}],&title&:&android沉浸式状态栏封装—教你玩出新花样&,&author&:&codegoogler.develope&,&content&:&\u003Cp\u003E项目中我们有时候都要用的透明状态栏(这里也成沉浸式状态栏),今天介绍一个gyf-dev写的一个封装状态栏开源框架\u003C\u002Fp\u003E\u003Cp\u003E效果图如下:\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-ff1e264acec58c8fe6202_b.jpg\& data-rawwidth=\&280\& data-rawheight=\&348\& class=\&content_image\& width=\&280\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='280'%20height='348'&&\u002Fsvg&\& data-rawwidth=\&280\& data-rawheight=\&348\& class=\&content_image lazy\& width=\&280\& data-actualsrc=\&https:\u002F\\u002Fv2-ff1e264acec58c8fe6202_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-8ccc1cf7c22e88bccd8cd48580dadd64_b.jpg\& data-rawwidth=\&280\& data-rawheight=\&298\& class=\&content_image\& width=\&280\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='280'%20height='298'&&\u002Fsvg&\& data-rawwidth=\&280\& data-rawheight=\&298\& class=\&content_image lazy\& width=\&280\& data-actualsrc=\&https:\u002F\\u002Fv2-8ccc1cf7c22e88bccd8cd48580dadd64_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E正文\u003C\u002Fp\u003E\u003Ch2\u003E从Android4.4开始,才可以实现状态栏着色,并且从5.0开始系统更加完善了这一功能。之前写过关于一篇 关于activity状态栏的一些总结
\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\u002Fblog.csdn.net\u002Fandroidstarjack\u002Farticle\u002Fdetails\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E有关Activity样式 、状态栏透明、屏幕亮度问题应用场景及其总结\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fh2\u003E\u003Cp\u003E说明\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E这是状态栏 \u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fgyf-dev\u002FScreenshots\u002Fblob\u002Fmaster\u002FImmersionBar\u002FStatusBar.png\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ea\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-2d5d00bbcecc80de4af8_b.jpg\& data-rawwidth=\&1036\& data-rawheight=\&60\& class=\&origin_image zh-lightbox-thumb\& width=\&1036\& data-original=\&https:\u002F\\u002Fv2-2d5d00bbcecc80de4af8_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1036'%20height='60'&&\u002Fsvg&\& data-rawwidth=\&1036\& data-rawheight=\&60\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1036\& data-original=\&https:\u002F\\u002Fv2-2d5d00bbcecc80de4af8_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-2d5d00bbcecc80de4af8_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E这是导航栏(有些手机没有导航栏) \u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fgyf-dev\u002FScreenshots\u002Fblob\u002Fmaster\u002FImmersionBar\u002FNavigationBar.png\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ea\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-541f7de1bd1be947179ac_b.jpg\& data-rawwidth=\&1040\& data-rawheight=\&118\& class=\&origin_image zh-lightbox-thumb\& width=\&1040\& data-original=\&https:\u002F\\u002Fv2-541f7de1bd1be947179ac_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1040'%20height='118'&&\u002Fsvg&\& data-rawwidth=\&1040\& data-rawheight=\&118\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1040\& data-original=\&https:\u002F\\u002Fv2-541f7de1bd1be947179ac_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-541f7de1bd1be947179ac_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E动态图\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E第一种方案: 可直接在主题中设置\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E
getWindow().setBackgroundDrawable(null);\u003Cbr\u003E
\u002F\u002F设置透明状态栏\u003Cbr\u003E
ViewGroup contentFrameLayout = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);\u003Cbr\u003E
View parentView = contentFrameLayout.getChildAt(0);\u003Cbr\u003E
if (parentView != null && Build.VERSION.SDK_INT &= 14) {\u003Cbr\u003E
parentView.setFitsSystemWindows(true);\u003Cbr\u003E
}\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E或者也可以这样 :
\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E第二种方案:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E将布局延伸到状态栏来处理,这次我们使用\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\u002Flib.csdn.net\u002Fbase\u002Fandroid\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Eandroid\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E:fitsSystemWindows=”true”属性,不让布局延伸到状态栏,这时状态栏就是透明的,然后添加一个和状态栏高、宽相同的指定颜色View来覆盖被透明化的状态栏。我们一步步来实现。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E1、第一步还是先将状态栏透明化,方法同上。\u003C\u002Fli\u003E\u003Cli\u003E2、在布局文件中添加android:fitsSystemWindows=”true”属性:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-c9cfb8dbca5bf20920cc5_b.jpg\& data-rawwidth=\&347\& data-rawheight=\&303\& class=\&content_image\& width=\&347\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='347'%20height='303'&&\u002Fsvg&\& data-rawwidth=\&347\& data-rawheight=\&303\& class=\&content_image lazy\& width=\&347\& data-actualsrc=\&https:\u002F\\u002Fv2-c9cfb8dbca5bf20920cc5_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E封装:\u003C\u002Fp\u003E\u003Cp\u003EImmersionBar.with(this)\u003Cbr\u003E
.transparentStatusBar()
\u002F\u002F透明状态栏,不写默认透明色\u003Cbr\u003E
.transparentNavigationBar()
\u002F\u002F透明导航栏,不写默认黑色(设置此方法,fullScreen()方法自动为true)\u003Cbr\u003E
.transparentBar()
\u002F\u002F透明状态栏和导航栏,不写默认状态栏为透明色,导航栏为黑色(设置此方法,fullScreen()方法自动为true)\u003Cbr\u003E
.statusBarColor(R.color.colorPrimary)
\u002F\u002F状态栏颜色,不写默认透明色\u003Cbr\u003E
.navigationBarColor(R.color.colorPrimary) \u002F\u002F导航栏颜色,不写默认黑色\u003Cbr\u003E
.barColor(R.color.colorPrimary)
\u002F\u002F同时自定义状态栏和导航栏颜色,不写默认状态栏为透明色,导航栏为黑色\u003Cbr\u003E
.statusBarAlpha(0.3f)
\u002F\u002F状态栏透明度,不写默认0.0f\u003Cbr\u003E
.navigationBarAlpha(0.4f)
\u002F\u002F导航栏透明度,不写默认0.0F\u003Cbr\u003E
.barAlpha(0.3f)
\u002F\u002F状态栏和导航栏透明度,不写默认0.0f\u003Cbr\u003E
.statusBarDarkFont(true)
\u002F\u002F状态栏字体是深色,不写默认为亮色\u003Cbr\u003E
.flymeOSStatusBarFontColor(R.color.btn3)
\u002F\u002F修改flyme OS状态栏字体颜色\u003Cbr\u003E
.fullScreen(true)
\u002F\u002F有导航栏的情况下,activity全屏显示,也就是activity最下面被导航栏覆盖,不写默认非全屏\u003Cbr\u003E
.hideBar(BarHide.FLAG_HIDE_BAR)
\u002F\u002F隐藏状态栏或导航栏或两者,不写默认不隐藏\u003Cbr\u003E
.addViewSupportTransformColor(toolbar)
\u002F\u002F设置支持view变色,可以添加多个view,不指定颜色,默认和状态栏同色,还有两个重载方法\u003Cbr\u003E
.titleBar(view)
\u002F\u002F解决状态栏和布局重叠问题,任选其一\u003Cbr\u003E
.statusBarView(view)
\u002F\u002F解决状态栏和布局重叠问题,任选其一\u003Cbr\u003E
.fitsSystemWindows(true)
\u002F\u002F解决状态栏和布局重叠问题,任选其一,默认为false,当为true时一定要指定statusBarColor(),不然状态栏为透明色\u003Cbr\u003E
.supportActionBar(true) \u002F\u002F支持ActionBar使用\u003Cbr\u003E
.statusBarColorTransform(R.color.orange)
\u002F\u002F状态栏变色后的颜色\u003Cbr\u003E
.navigationBarColorTransform(R.color.orange) \u002F\u002F导航栏变色后的颜色\u003Cbr\u003E
.barColorTransform(R.color.orange)
\u002F\u002F状态栏和导航栏变色后的颜色\u003Cbr\u003E
.removeSupportView(toolbar)
\u002F\u002F移除指定view支持\u003Cbr\u003E
.removeSupportAllView() \u002F\u002F移除全部view支持\u003Cbr\u003E
.navigationBarEnable(true)
\u002F\u002F是否可以修改导航栏颜色,默认为true\u003Cbr\u003E
.navigationBarWithKitkatEnable(true)
\u002F\u002F是否可以修改安卓4.4和emui3.1手机导航栏颜色,默认为true\u003Cbr\u003E
.fixMarginAtBottom(true)
\u002F\u002F当xml里使用android:fitsSystemWindows=\&true\&属性时,解决4.4和emui3.1手机底部有时会出现多余空白的问题,默认为false,非必须\u003Cbr\u003E
.addTag(\&tag\&)
\u002F\u002F给以上设置的参数打标记\u003Cbr\u003E
.getTag(\&tag\&)
\u002F\u002F根据tag获得沉浸式参数\u003Cbr\u003E
\u002F\u002F重置所以沉浸式参数\u003Cbr\u003E
.keyboardEnable(true)
\u002F\u002F解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode\u003Cbr\u003E
\u002F\u002F必须调用方可沉浸式\u003C\u002Fp\u003E\u003Cp\u003E使用方式\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E第一步:基础用法(已经可以满足日常沉浸式)\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EImmersionBar.with(this).init();\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E第二步\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E在activity的onDestroy方法中执行\u003C\u002Fp\u003E\u003Cp\u003EImmersionBar.with(this).destroy(); \u002F\u002F不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E建议 \u003Cbr\u003E建议在BaseActivity中初始化和销毁,可以参看demo中
\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fgyf-dev\u002FImmersionBar\u002Fblob\u002Fmaster\u002Fsample\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fgyf\u002Fimmersionbar\u002Factivity\u002FBaseActivity.java\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EBaseActivity\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003Epublic class BaseActivity extends AppCompatActivity { private ImmersionBar mImmersionB\u003Cbr\u003E
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {\u003Cbr\u003E
super.onCreate(savedInstanceState);\u003Cbr\u003E
mImmersionBar = ImmersionBar.with(this);\u003Cbr\u003E
mImmersionBar.init();
\u002F\u002F所有子类都将继承这些相同的属性\u003Cbr\u003E\u003Cbr\u003E
}\u003Cbr\u003E\u003Cbr\u003E
@Override protected void onDestroy() {\u003Cbr\u003E
super.onDestroy();\u003Cbr\u003E
mImmersionBar.destroy();
\u002F\u002F不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态\u003Cbr\u003E
}\u003Cbr\u003E }\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-03c7e553e4d8d23f0e95dd0fa3c763fa_b.jpg\& data-rawwidth=\&284\& data-rawheight=\&318\& class=\&content_image\& width=\&284\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='284'%20height='318'&&\u002Fsvg&\& data-rawwidth=\&284\& data-rawheight=\&318\& class=\&content_image lazy\& width=\&284\& data-actualsrc=\&https:\u002F\\u002Fv2-03c7e553e4d8d23f0e95dd0fa3c763fa_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-5e868fbd1e1a229ee2e8a7_b.jpg\& data-rawwidth=\&281\& data-rawheight=\&504\& class=\&content_image\& width=\&281\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='281'%20height='504'&&\u002Fsvg&\& data-rawwidth=\&281\& data-rawheight=\&504\& class=\&content_image lazy\& width=\&281\& data-actualsrc=\&https:\u002F\\u002Fv2-5e868fbd1e1a229ee2e8a7_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E如何 隐藏导航栏或状态栏\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u002F**\u003Cbr\u003E
* 隐藏导航栏或状态栏\u003Cbr\u003E
*\u003Cbr\u003E
* @param barHide the bar hide\u003Cbr\u003E
* @return the immersion bar\u003Cbr\u003E
*\u002F public ImmersionBar hideBar(BarHide barHide) {\u003Cbr\u003E
mBarParams.barHide = barH\u003Cbr\u003E
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT || OSUtils.isEMUI3_1()) {\u003Cbr\u003E
if ((mBarParams.barHide == BarHide.FLAG_HIDE_NAVIGATION_BAR) ||\u003Cbr\u003E
(mBarParams.barHide == BarHide.FLAG_HIDE_BAR)) {\u003Cbr\u003E
mBarParams.navigationBarColor = Color.TRANSPARENT;\u003Cbr\u003E
mBarParams.fullScreenTemp =\u003Cbr\u003E
} else {\u003Cbr\u003E
mBarParams.navigationBarColor = mBarParams.navigationBarColorT\u003Cbr\u003E
mBarParams.fullScreenTemp =\u003Cbr\u003E
}\u003Cbr\u003E
}\u003Cbr\u003E\u003Cbr\u003E
}\u003C\u002Fp\u003E\u003Cp\u003E部分问题\u003C\u002Fp\u003E\u003Cp\u003E解决华为emui3.0或者3.1手机手动隐藏导航栏按钮时,导航栏背景未被隐藏的问题\u003C\u002Fp\u003E\u003Ch2\u003E什么叫做手动隐藏,就是下图中标红的向下隐藏按钮 \u003C\u002Fh2\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fgyf-dev\u002FScreenshots\u002Fblob\u002Fmaster\u002FImmersionBar\u002Femui3.1_navigation_bar.png\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ea\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-da719f2992cad67dd87a60e_b.jpg\& data-rawwidth=\&862\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb\& width=\&862\& data-original=\&https:\u002F\\u002Fv2-da719f2992cad67dd87a60e_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='862'%20height='70'&&\u002Fsvg&\& data-rawwidth=\&862\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&862\& data-original=\&https:\u002F\\u002Fv2-da719f2992cad67dd87a60e_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-da719f2992cad67dd87a60e_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E第一种解决方案,监听华为虚拟按钮,建议在baseActivity里使用\u003C\u002Fp\u003E\u003Cp\u003E@Override protected void onCreate(@Nullable Bundle savedInstanceState) {\u003Cbr\u003E
super.onCreate(savedInstanceState);\u003Cbr\u003E
immersionBar = ImmersionBar.with(this);\u003Cbr\u003E
immersionBar.init();\u003Cbr\u003E
if (OSUtils.isEMUI3_1())
\u002F\u002F解决华为emui3.0与3.1手机手动隐藏底部导航栏时,导航栏背景色未被隐藏的问题\u003Cbr\u003E
getContentResolver().registerContentObserver(Settings.System.getUriFor\u003Cbr\u003E
(\&navigationbar_is_min\&), true, mNavigationStatusObserver);\u003Cbr\u003E
}\u003Cbr\u003E\u003Cbr\u003E
private ContentObserver mNavigationStatusObserver = new ContentObserver(new Handler()) {\u003Cbr\u003E
@Override public void onChange(boolean selfChange) {\u003Cbr\u003E
int navigationBarIsMin = Settings.System.getInt(getContentResolver(),\u003Cbr\u003E
\&navigationbar_is_min\&, 0);\u003Cbr\u003E
if (navigationBarIsMin == 1) {\u003Cbr\u003E
\u002F\u002F导航键隐藏了\u003Cbr\u003E
immersionBar\u003Cbr\u003E
.transparentNavigationBar()\u003Cbr\u003E
.init();\u003Cbr\u003E
} else {\u003Cbr\u003E
\u002F\u002F导航键显示了\u003Cbr\u003E
immersionBar\u003Cbr\u003E
.navigationBarColor(android.R.color.black)\u003Cbr\u003E
.fullScreen(false)\u003Cbr\u003E
.init();\u003Cbr\u003E
}\u003Cbr\u003E
}\u003Cbr\u003E
};\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E第二种解决方案,禁止对导航栏相关设置\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EImmersionBar.with(this)\u003Cbr\u003E
.navigationBarEnable(false)
\u002F\u002F禁止对导航栏相关设置 \u002F\u002F或者 \u002F\u002F .navigationBarWithKitkatEnable(false)
\u002F\u002F禁止对4.4设备导航栏相关设置\u003Cbr\u003E
.init();\u003C\u002Fp\u003E\u003Cp\u003Eandroid 6.0 有导航栏效果\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-fa1cf5d372a9c2e4d3cefef9b8a29124_b.jpg\& data-rawwidth=\&198\& data-rawheight=\&352\& class=\&content_image\& width=\&198\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='198'%20height='352'&&\u002Fsvg&\& data-rawwidth=\&198\& data-rawheight=\&352\& class=\&content_image lazy\& width=\&198\& data-actualsrc=\&https:\u002F\\u002Fv2-fa1cf5d372a9c2e4d3cefef9b8a29124_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E项目地址:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fandroidstarjack\u002FMyStausBarFacoryTest\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttps:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\\u002Fandroidstarj\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003Eack\u002FMyStausBarFacoryTest\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003Egyf-dev的博客地址:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\\u002Fgyf-dev\u002FImmersionBar\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttps:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\\u002Fgyf-dev\u002FImme\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003ErsionBar\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E博客地址:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\u002Fblog.csdn.net\u002Fandroidstarjack\u002Farticle\u002Fdetails\u002F\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttp:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\u003Eblog.csdn.net\u002Fandroidst\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003Earjack\u002Farticle\u002Fdetails\u002F3C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 : \u003Cbr\u003E微信公众号:终端研发部\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EaHR0cDovL3dlaXhpbi5xcS5jb20vci9KemdISDZQRXB2N1pyZWQ4OTIwMQ== (二维码自动识别)\u003C\u002Fp\u003E\u003Cp\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T09:54:32.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&collapsedCount&:0,&likeCount&:0,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 手机&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 应用&}],&adminClosedComment&:false,&titleImageSize&:{&width&:0,&height&:0},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&c_&,&name&:&Android交流研发部&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:0,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T17:54:32+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[],&summary&:&\u003Cimg src=\&https:\u002F\\u002Fv2-ff1e264acec58c8fe.jpg\& data-rawwidth=\&280\& data-rawheight=\&348\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&https:\u002F\\u002Fv2-ff1e264acec58c8fe6202_r.jpg\&\u003E项目中我们有时候都要用的透明状态栏(这里也成沉浸式状态栏),今天介绍一个gyf-dev写的一个封装状态栏开源框架效果图如下: 正文从Android4.4开始,才可以实现状态栏着色,并且从5.0开始系统更加完善了这一功能。之前写过关于一篇 关于activity状态栏的一…&,&reviewingCommentsCount&:0,&meta&:{&previous&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002F50\u002Fv2-3e166b63d3c48f7a54b979d95af6060d_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 开发&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 应用&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&安卓 UI&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&微信公众号:终端研发部 ,每天一篇技术分享,关注我学习更多&,&isFollowing&:false,&hash&:&85f141eeede82&,&uid&:958000,&isOrg&:false,&slug&:&codegoogler.develope&,&isFollowed&:false,&description&:&关注我(微信公众号:终端研发部)走在前技术领域的最前沿,打造一个最受欢迎的学习渠道,带你一起升华技术,还有职场经验,互联网+最新动态。\n职场中我与你闲扯技术,生活中笑谈科技人生。以幽默诙谐的态度,面对乏味无聊的技术,用扯淡的方式,分享技术的内涵。 同时探索对码农的思考引导你做一个跨越思维的程序员。更重要的是这里还有诗和远方。&,&name&:&终端研发部&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fcodegoogler.develope&,&avatar&:{&id&:&v2-a29fbcba5f4f674a5f22da&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&c_&,&name&:&Android交流研发部&},&content&:&\u003Cp\u003E有关于Activity作为dialog全屏显示,沉浸式状态栏及屏幕亮度问题的一次总结\u003C\u002Fp\u003E\u003Ch4\u003E需求:\u003C\u002Fh4\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E1.弹出一个全屏显示的Dialog,里面做了好多的逻辑处理,比如抢红包,请求接口,比如动画效果。\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E2.通过某一事件改变当前布局的背景颜色\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch4\u003E效果图:\u003C\u002Fh4\u003E\u003Ch4\u003E分析:\u003C\u002Fh4\u003E\u003Cul\u003E\u003Cli\u003E\u003Col\u003E\u003Cli\u003E如果碰到布局和逻辑比较复杂的dialog,则建议用弹出activity作为一个dialog,因为生命周期及其API提供的比较多\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Col\u003E\u003Cli\u003E实现全屏的dialog要设置主题\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Col\u003E\u003Cli\u003E实现状态栏透明\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Col\u003E\u003Cli\u003E设置亮度的问题\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch4\u003E设置Activity透明度\u003C\u002Fh4\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E使用自定义主题,先看看自定义主题中需要用到的一些属性设置说明\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&!-- 在此添加一种颜色值模式ARGB{xxxxxxxx},A{前两位}表示Appha即透明度,取值为0-255 --&\n
&style name=\&activity_DialogTransparent\&&\n
&item name=\&android:windowBackground\&&@android:color\u002Ftransparent&\u002Fitem&\n
&item name=\&android:windowFullscreen\&&true&\u002Fitem&\n
&item name=\&android:backgroundDimEnabled\&&true&\u002Fitem&\n
&item name=\&android:backgroundDimAmount\&&0.2&\u002Fitem&\n
&item name=\&android:windowIsTranslucent\&&true&\u002Fitem&\n
&item name=\&android:layout_width\&&fill_parent&\u002Fitem&\n
&item name=\&android:layout_height\&&fill_parent&\u002Fitem&\n
&item name=\&android:windowAnimationStyle\&&@android:style\u002FAnimation.Translucent&\u002Fitem& &!--Activity切换动画效果--&\n
&\u002Fstyle&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E定义好主题之后需要在Activity配置中进行对主题的引用!\u003C\u002Fp\u003E\u003Cp\u003E在代码中对窗体设置透明度灰度的方法 设置透明度(这是窗体本身的透明度,非背景)\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EWindowManager.LayoutParams windowLP = getWindow().getAttributes();\n
windowLP.alpha = 0.5f;\n
getWindow().setAttributes(windowLP);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003Ealpha在0.0f到1.0f之间。1.0完全不透明,0.0f完全透明\u003C\u002Fp\u003E\u003Cp\u003E设置灰度\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EWindowManager.LayoutParams windowLP = getWindow().getAttributes();\n
windowLP.dimAmount = 0.5f;\n
getWindow().setAttributes(windowLP);\n
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003EdimAmount在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗\u003C\u002Fp\u003E\u003Cp\u003E这些设置对dialog对话框同样也有效;\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cbr\u003E\u003Cli\u003E\u003Cp\u003E在清单文件中配置Activity时声明\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eandroid:theme=\&@android:style\u002FTheme.Translucent\&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch4\u003E设置Activity\u002FApplication全屏\u003C\u002Fh4\u003E\u003Cp\u003E1.在代码中设置\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F\u002F无title
requestWindowFeature(Window.FEATURE_NO_TITLE);
\u002F\u002F全屏
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);\n
\u002F\u002F此两段代码必须设置在setContentView()方法之前\n
setContentView(R.layout.main);\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E2.在配置文件中设置 在Activity的声明中设置主题为全屏\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eandroid:theme=\&@android:style\u002FTheme.NoTitleBar.Fullscreen\&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Ch4\u003E状态栏着色-透明状态栏\u003C\u002Fh4\u003E\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\u002Fblog.csdn.net\u002Fandroidstarjack\u002Farticle\u002Fdetails\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EAndroid状态栏着色-透明状态栏 - androidstarjack的专栏 - 博客频道 - CSDN.NET\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cp\u003E从Android4.4开始,才可以实现状态栏着色,并且从5.0开始系统更加完善了这一功能,可直接在主题中设置\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&item name=\&colorPrimaryDark\&&@color\u002FcolorPrimaryDark&\u002Fitem&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E或者\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EgetWindow().setStatusBarColor(color)\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E来实现,但毕竟4.4+的机器还有很大的占比,所以就有必要寻求其它的解决方案。\u003C\u002Fp\u003E\u003Cp\u003E第一种方案:\u003C\u002Fp\u003E\u003Cp\u003E1、首先将手机手机状态栏透明化:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eif (Build.VERSION.SDK_INT &= Build.VERSION_CODES.LOLLIPOP) {\u002F\u002F5.0及以上\n
View decorView = getWindow().getDecorView();\n
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN\n
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;\n
decorView.setSystemUiVisibility(option);\n
getWindow().setStatusBarColor(Color.TRANSPARENT);\n
} else if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {\u002F\u002F4.4到5.0\n
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();\n
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);\n
}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E在相应的Activity或基类执行这段代码就ok了。\u003C\u002Fp\u003E\u003Cp\u003E可见在4.4到5.0的系统、5.0及以上系统的处理方式有所不同\u003C\u002Fp\u003E\u003Cp\u003E除了这种代码修改额方式外,还可以通过主题来修改,需要在values、values-v19、values-v21目录下分别创建相应的主题:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F\u002Fvalues\n&style name=\&TranslucentTheme\& parent=\&AppTheme\&&\n&\u002Fstyle&\n\n\u002F\u002Fvalues-v19\n&style name=\&TranslucentTheme\& parent=\&Theme.AppCompat.Light.NoActionBar\&&\n
&item name=\&android:windowTranslucentStatus\&&true&\u002Fitem&\n
&item name=\&android:windowTranslucentNavigation\&&false&\u002Fitem&\n&\u002Fstyle&\n\n\u002F\u002Fvalues-v21\n&style name=\&TranslucentTheme\& parent=\&Theme.AppCompat.Light.NoActionBar\&&\n
&item name=\&android:windowTranslucentStatus\&&true&\u002Fitem&\n
&item name=\&android:windowTranslucentNavigation\&&false&\u002Fitem&\n
&item name=\&android:statusBarColor\&&@android:color\u002Ftransparent&\u002Fitem&\n&\u002Fstyle&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E给相应Activity或Application设置该主题就ok了。\u003C\u002Fp\u003E\u003Cp\u003E两种方式根据需求选择就好了,到这里我们就完成了第一步,将状态栏透明化了。\u003C\u002Fp\u003E\u003Cp\u003E完成了第一步,我们开始给状态栏加上想要的色彩吧!\u003C\u002Fp\u003E\u003Cp\u003E在values、values-v19目录添加如下尺寸:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F\u002Fvalues\n&dimen name=\&padding_top\&&0dp&\u002Fdimen&\n\n\u002F\u002Fvalues-v19\n&dimen name=\&padding_top\&&25dp&\u002Fdimen&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E关于25dp,在有些系统上可能有误差,这里不做讨论!\u003C\u002Fp\u003E\u003Cp\u003E2.1 页面顶部使用Toolbar(或自定义title) 一般情况状态栏的颜色和Toolbar的颜色相同,既然状态栏透明化后,布局页面延伸到了状态栏,何不给Toolbar加上一个状态栏高度的顶部padding呢:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&android.support.v7.widget.Toolbar\n
android:id=\&@+id\u002Ftoolbar\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&wrap_content\&\n
android:background=\&@color\u002FcolorPrimary\&\n
android:paddingTop=\&@dimen\u002Fpadding_top\&\n
android:theme=\&@style\u002FAppTheme.AppBarOverlay\& \u002F&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E效果图下:\u003C\u002Fp\u003E\u003Ch4\u003E第二种方案:\u003C\u002Fh4\u003E\u003Cp\u003E在方案一中,我们没有使用android:fitsSystemWindows=\&true\&属性,而是将布局延伸到状态栏来处理,这次我们使用android:fitsSystemWindows=\&true\&属性,不让布局延伸到状态栏,这时状态栏就是透明的,然后添加一个和状态栏高、宽相同的指定颜色View来覆盖被透明化的状态栏。我们一步步来实现。\u003C\u002Fp\u003E\u003Cp\u003E1、第一步还是先将状态栏透明化,方法同上。\u003C\u002Fp\u003E\u003Cp\u003E2、在布局文件中添加android:fitsSystemWindows=\&true\&属性:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&?xml version=\&1.0\& encoding=\&utf-8\&?&\n&LinearLayout xmlns:android=\&http:\u002F\\u002Fapk\u002Fres\u002Fandroid\&\n
xmlns:app=\&http:\u002F\\u002Fapk\u002Fres-auto\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&match_parent\&\n
android:fitsSystemWindows=\&true\&\n
android:orientation=\&vertical\&&\n\n
&android.support.v7.widget.Toolbar\n
android:id=\&@+id\u002Ftoolbar\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&wrap_content\&\n
android:background=\&@color\u002FcolorPrimary\&\n
android:theme=\&@style\u002FAppTheme.AppBarOverlay\&\n
app:title=\&第二种方案\& \u002F&\n&\u002FLinearLayout&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E3、创建View并添加到状态栏:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eprivate void addStatusBarView() {\n
View view = new View(this);\n
view.setBackgroundColor(getResources().getColor(R.color.colorPrimary));\n
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,\n
getStatusBarHeight(this));\n
ViewGroup decorView = (ViewGroup) findViewById(android.R.id.content);\n
decorView.addView(view, params);\n
}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E原理很简单,但是要额外写这些代码。。。最后看下效果:\u003C\u002Fp\u003E\u003Ch4\u003E第三种方案:\u003C\u002Fh4\u003E\u003Cp\u003E和方案二类似,同样使用android:fitsSystemWindows=\&true\&属性,再修改布局文件的根布局为需要的状态栏颜色,因根布局的颜色被修改,所以你需要在里边多嵌套一层布局,来指定界面的主背景色,比如白色等等,否则就和状态栏颜色一样了。说起来有点抽象,还是看具体的例子吧:\u003C\u002Fp\u003E\u003Cp\u003E1、先将状态栏透明化,方法同上。\u003C\u002Fp\u003E\u003Cp\u003E2、修改布局文件:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&?xml version=\&1.0\& encoding=\&utf-8\&?&\n&RelativeLayout xmlns:android=\&http:\u002F\\u002Fapk\u002Fres\u002Fandroid\&\n
xmlns:app=\&http:\u002F\\u002Fapk\u002Fres-auto\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&match_parent\&\n
android:background=\&#ff9900\&\n
android:fitsSystemWindows=\&true\&&\n\n
&LinearLayout\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&match_parent\&\n
android:background=\&#ffffff\&\n
android:orientation=\&vertical\&&\n\n
&android.support.v7.widget.Toolbar\n
android:id=\&@+id\u002Ftoolbar\&\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&wrap_content\&\n
android:background=\&#ff9900\&\n
android:theme=\&@style\u002FAppTheme.AppBarOverlay\&\n
app:title=\&第三种方案\& \u002F&\n
&\u002FLinearLayout&\n&\u002FRelativeLayout&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E修改完了,看效果:\u003C\u002Fp\u003E\u003Cp\u003E如果项目有几十个界面,这样的方式修改起来还是挺累的,你还要考虑各种嵌套问题。 后两种方案的例子相对简单,有兴趣的话你可以尝试更多的场景! 三种方式如何选择,相信到这里你应该有答案了吧,我个人更喜欢第一种!\u003C\u002Fp\u003E\u003Ch4\u003E有关于Activity屏幕亮度问题\u003C\u002Fh4\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n * Android获取并设置Activity的亮度\n * 此API只适合2.1以上版本\n *\u002F\npublic class ActivityUtils
\u002F**\n
* 判断是否开启了自动亮度调节\n
* @param aContentResolver\n
* @return\n
public static boolean isAutoBrightness(ContentResolver aContentResolver) {\n
boolean automicBrightness =\n
automicBrightness = Settings.System.getInt(aContentResolver,\n
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;\n
} catch (Settings.SettingNotFoundException e) {\n
e.printStackTrace();\n
return automicB\n
\u002F**\n
* 获取屏幕的亮度\n
* @param activity\n
* @return\n
public static int getScreenBrightness(Activity activity) {\n
int nowBrightnessValue = 0;\n
ContentResolver resolver = activity.getContentResolver();\n
nowBrightnessValue = android.provider.Settings.System.getInt(\n
resolver, Settings.System.SCREEN_BRIGHTNESS);\n
} catch (Exception e) {\n
e.printStackTrace();\n
return nowBrightnessV\n
\u002F**\n
* 设置亮度\n
* @param activity\n
* @param brightness\n
public static void setBrightness(Activity activity, int brightness) {\n
\u002F\u002F Settings.System.putInt(activity.getContentResolver(),\n
\u002F\u002F Settings.System.SCREEN_BRIGHTNESS_MODE,\n
\u002F\u002F Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);\n
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();\n
lp.screenBrightness = Float.valueOf(brightness) * (1f \u002F 255f);\n
activity.getWindow().setAttributes(lp);\n
\u002F**\n
* 停止自动亮度调节\n
* @param activity\n
public static void stopAutoBrightness(Activity activity) {\n
Settings.System.putInt(activity.getContentResolver(),\n
Settings.System.SCREEN_BRIGHTNESS_MODE,\n
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);\n
\u002F**\n
* 开启亮度自动调节\n
* @param activity\n
public static void startAutoBrightness(Activity activity) {\n
Settings.System.putInt(activity.getContentResolver(),\n
Settings.System.SCREEN_BRIGHTNESS_MODE,\n
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);\n
\u002F**\n
* 保存亮度设置状态\n
* @param resolver\n
* @param brightness\n
public static void saveBrightness(ContentResolver resolver, int brightness) {\n
Uri uri = android.provider.Settings.System\n
.getUriFor(\&screen_brightness\&);\n
android.provider.Settings.System.putInt(resolver, \&screen_brightness\&,\n
brightness);\n
resolver.notifyChange(uri, null);\n
}\n}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E注意以上只适用于2.1的版本。\u003C\u002Fp\u003E\u003Cp\u003E可以通过seekBar改变其亮度:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u002F**\n*
使用SeekBar进行亮度控制:\n*\u002F\nprivate void detalSeekBar() {\n
sSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {\n
@Override\n
public void onStopTrackingTouch(SeekBar seekBar) {\n
@Override\n
public void onStartTrackingTouch(SeekBar seekBar) {\n
@Override\n
public void onProgressChanged(SeekBar seekBar, int progress,\n
boolean fromUser) {\n
LogUtil.e(\&yuyahao\&,\&progress:
\&+progress);\n
if (progress & 10) {\n
} else {\n
messageTv.setText(\&activity当前亮度为: \&+progress);\n
ActivityUtils.setBrightness(MyShowLightDialog.this, progress);\n
\u002F\u002Fll_contentView.setBackgroundResource(ContextCompat.getColor(MainActivity.this,Color.parseColor(\&#\&+getRandColorCode()));\n
ll_contentView.setBackgroundColor(Color.parseColor(\&#\&+getRandColorCode()));\n
\u002F\u002F获取当前亮度的位置\n\u002F\u002F
int a =ActivityUtils.getScreenBrightness(this);\n\u002F\u002F
sSeekBar.setProgress(a);\n
}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E效果图:\u003C\u002Fp\u003E\u003Cp\u003E如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :
微信公众号:终端研发部\u003C\u002Fp\u003E\u003Cp\u003E(欢迎关注学习和交流)\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T14:01:04+08:00&,&url&:&\u002Fp\u002F&,&title&:&有关Activity样式 、状态栏透明、屏幕亮度问题应用场景及其总结&,&summary&:&有关于Activity作为dialog全屏显示,沉浸式状态栏及屏幕亮度问题的一次总结需求:1.弹出一个全屏显示的Dialog,里面做了好多的逻辑处理,比如抢红包,请求接口,比如动画效果。2.通过某一事件改变当前布局的背景颜色效果图:分析:如果碰到布局和逻辑比较复…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:0,&likesCount&:0},&next&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002F50\u002Fv2-bfe1cd559ac5a_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Kotlin&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&Android 开发&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&微信公众号:终端研发部 ,每天一篇技术分享,关注我学习更多&,&isFollowing&:false,&hash&:&85f141eeede82&,&uid&:958000,&isOrg&:false,&slug&:&codegoogler.develope&,&isFollowed&:false,&description&:&关注我(微信公众号:终端研发部)走在前技术领域的最前沿,打造一个最受欢迎的学习渠道,带你一起升华技术,还有职场经验,互联网+最新动态。\n职场中我与你闲扯技术,生活中笑谈科技人生。以幽默诙谐的态度,面对乏味无聊的技术,用扯淡的方式,分享技术的内涵。 同时探索对码农的思考引导你做一个跨越思维的程序员。更重要的是这里还有诗和远方。&,&name&:&终端研发部&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fcodegoogler.develope&,&avatar&:{&id&:&v2-a29fbcba5f4f674a5f22da&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&c_&,&name&:&Android交流研发部&},&content&:&\u003Cp\u003E如果对Kotlin不太了解的童鞋们请参考\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Flink.juejin.im\u002F%3Ftarget%3Dhttp%253A%252F%252Fblog.csdn.net%252Fandroidstarjack%252Farticle%252Fdetails%252F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EKotlin成为Android开发首选语言——你绝对不能错过的\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cbr\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Flink.juejin.im\u002F%3Ftarget%3Dhttp%253A%252F%252Fblog.csdn.net%252Fandroidstarjack%252Farticle%252Fdetails%252F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Eblog.csdn.net\u002Fandroidstar…\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E推荐几个学习的地址:\u003C\u002Fp\u003E\u003Cblockquote\u003E官网文档:\u003Cbr\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Flink.juejin.im\u002F%3Ftarget%3Dhttp%253A%252F%252Fkotlinlang.org%252Fdocs%252Freference%252Fandroid-overview.html\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ekotlinlang.org\u002Fdocs\u002Frefere…\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cbr\u003E最全最值得去学习的文档,把他 当做一本词典用,效率会提高的更加快些\u003Cbr\u003E官网:\u003Cbr\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Flink.juejin.im\u002F%3Ftarget%3Dhttp%253A%252F%252Fkotlinlang.org%252F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ekotlinlang.org\u002F\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003Cbr\u003E官网是个很不多的学习的地方\u003C\u002Fblockquote\u003E\u003Cp\u003E至于Kotlin是什么,简单的说就是跑在jvm上的新语言,他的特点就是短小 快,至于有什么好处,那就说不完啊,挑特点来说。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E无缝对接java,可以java代码和kotlin代码互相调用\u003C\u002Fli\u003E\u003Cli\u003E函数扩展功能,再也不知道啥叫继承\u003C\u002Fli\u003E\u003Cli\u003EKotlin 是一个基于 JVM 的编程语言,与 Java 有很深的渊源。\u003C\u002Fli\u003E\u003Cli\u003E它能与 Java 100% 互通,具备诸多 Java 尚不支持的新特性。\u003C\u002Fli\u003E\u003Cli\u003E一键java转kotlin,如果你有遗留的java代码,可以一键转换,Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript ,方便在没有 JVM 的设备上运行\u003C\u002Fli\u003E\u003Cli\u003E可用于移动端以及 Web 开发,是一种全栈式开发语言\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch2\u003E创建我的第一个kotlin!\u003C\u002Fh2\u003E\u003Cul\u003E\u003Cli\u003E首先打开你的AS,像往常一样,创建一个Android应用。\u003C\u002Fli\u003E\u003Cli\u003E然后在Setting里找到Plugin选项,搜索kotlin插件。从官方仓库下载安卓即可。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003Ekotlin-android-extensions-1.1.2-4.jar的下载地址为:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002F?target=https%3A\u002F\u002Flink.juejin.im\u002F%3Ftarget%3Dhttp%253A%252F%252Fdownload.csdn.net%252Fdetail%252Fandroidstarjack%252F9862176\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Edownload.csdn.net\u002Fdetail\u002Fandr…\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E在app的gradle下加入如下代码\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eapply plugin: 'kotlin-android'\n\napply plugin: 'kotlin-android-extensions'\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E在总工程project的gradle下加入如下代码:(大部分是自动生成的)\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Edependencies {\n
classpath 'com.android.tools.build:gradle:2.2.2'\n
classpath \&org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\&\n\n
\u002F\u002F NOTE: Do not place your applicati they belong\n
\u002F\u002F in the individual module build.gradle files\n
}\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E在model下面的gradle下加入如下代码(注意你自己配置的时候,改成最新版本)\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eclasspath \&org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4\&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E这里我用的是已下载好的jar\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ecompile files('libs\u002Fkotlin-android-extensions-1.1.2-4.jar')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E将Hello World编为Hello Kotlin\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&http:\u002F\\u002Fv2-cc0bef7a2bb544af22a4f6d7b84c826e_b.png\& data-rawwidth=\&607\& data-rawheight=\&408\& class=\&origin_image zh-lightbox-thumb\& width=\&607\& data-original=\&http:\u002F\\u002Fv2-cc0bef7a2bb544af22a4f6d7b84c826e_r.png\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E转换后\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&http:\u002F\\u002Fv2-ae57ef41e844_b.png\& data-rawwidth=\&480\& data-rawheight=\&300\& class=\&origin_image zh-lightbox-thumb\& width=\&480\& data-original=\&http:\u002F\\u002Fv2-ae57ef41e844_r.png\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E将两断代码做一个比较,可以看到的语法变化有:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003Eextends 变成了 :\u003Cbr\u003E函数定义关键字变为了fun\u003C\u002Fli\u003E\u003Cli\u003E分号不见了\u003C\u002Fli\u003E\u003Cli\u003E变量名称写在了类型前面\u003C\u002Fli\u003E\u003Cli\u003E这些是语法的变化,到后面还会有一些,用得多了,也就记住了。后面再遇到语法变化还会继续总结。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E首先给xml文件里的Button加一个id\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E&Button\n
android:layout_width=\&match_parent\&\n
android:layout_height=\&wrap_content\&\n
android:id=\&@+id\u002Fbtn_onclick01\&\n
android:text=\&点击事件\&\u002F&\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u0

我要回帖

更多关于 ios web app 状态栏 的文章

 

随机推荐