你们的魅族沉浸式状态栏是什么沉浸了吗

4711 条评论分享收藏感谢收起赞同 257 条评论分享收藏感谢收起知识教程 | 优化状态栏沉浸式效果
沉浸式状态栏是让开发者尤其是Android开发者很头疼的问题,耗费开发者很多精力去校验代码在各个系统版本、各个机型上是否有效,今天这篇教程就跟大家分享优化初始化状态栏沉浸式效果的方法。
使用APICloud时,参照社区源码,初始化状态栏沉浸式,像这样去编写:
有的开发者可能会遇到在Android机器上,导航栏有卡顿效果,仔细查找原因,打开api.js 找到fixStatusBar方法,你会发现是api.js里面根据手机型号等条件操作dom进行适配,方法内还使用了扩展的api对象获取数据,所以该方法必须在apireader内执行,卡顿效果就是加载api对象的时间,apiready执行变晚。
下面这个方法分享给大家,帮助你们解决卡顿问题。
初始化程序时,index.html 文件中 apireader 内执行:
在打开其他window时,不在apiready内调用,提前处理沉浸式效果,可以解决卡顿问题。
写到常用方法内:
更多开发知识教程及app开发周期、价格,请关注V:柚子科技APICloud。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点&nbsp&#8250&nbsp&nbsp&#8250&nbsp
Android 沉浸式状态栏攻略 让你的状态栏变色吧
;&本文出自:注:本文对沉浸式的理解有误,沉浸式是状态栏和底部虚拟导航栏都消失,而本文只修改让状态栏的颜色。在官方文档中,对沉浸式有明确的定义释,&&一文专门对这个概念的误用做了解释&。当然本文对状态栏的颜色改变方法的介绍没有问题。但是这个概念还是要区分清楚。另外,官网专门介绍沉浸式的文档在:&。当然作者本人是知道沉浸式和透明栏的区别的,在文章开头也写明了这样用这个标题的原因。一、概述近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图:关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去&上面了解了解,请勿指点我说的博文标题起得不对,thx。恩,接下来正题。首先只有大于等于4.4版本支持这个半透明状态栏的效果,但是4.4和5.0的显示效果有一定的差异,所有本篇博文内容为:如何实现半透明状态栏效果在大于4.4版本之上。如何让4.4的效果与5.0的效果尽可能一致。看了不少参考文章,都介绍到这个库,大家可以了解:。不过本篇博文并未基于此库,自己想了个hack,对于此库源码有空再看了。二、效果图先贴下效果图,以便和实现过程中做下对比4.4 模拟器5.x 真机ok,有了效果图之后就开始看实现了。三、实现半透明状态栏因为本例使用了NavigationView,所以布局代码稍多,当然如果你不需要,可以自己进行筛减。注意引入相关依赖:compile&'com.android.support:appcompat-v7:22.2.1'
compile&'com.android.support:support-v4:22.2.1'
compile&'com.android.support:design:22.2.0'(一)colors.xml 和 styles.xml首先我们定义几个颜色:res/values/color.xml&?xml&version=&1.0&&encoding=&utf-8&?&
&resources&
&&&&&color&name=&primary&&#FF03A9F4&/color&
&&&&&color&name=&primary_dark&&#FF0288D1&/color&
&&&&&color&name=&status_bar_color&&@color/primary_dark&/color&
&/resources&下面定义几个styles.xml注意文件夹的路径:values/styles.xml&resources&
&&&&&style&name=&BaseAppTheme&&parent=&Theme.AppCompat.Light.NoActionBar&&
&&&&&&&&&!--&Customize&your&theme&here.&--&
&&&&&&&&&item&name=&colorPrimary&&@color/primary&/item&
&&&&&&&&&item&name=&colorPrimaryDark&&@color/primary_dark&/item&
&&&&&&&&&item&name=&colorAccent&&#FF4081&/item&
&&&&&/style&
&&&&&!--&Base&application&theme.&--&
&&&&&style&name=&AppTheme&&parent=&@style/BaseAppTheme&&
&&&&&/style&
&/resources&values-v19&resources&
&&&&&style&name=&AppTheme&&parent=&@style/BaseAppTheme&&
&&&&&&&&&item&name=&android:windowTranslucentStatus&&true&/item&
&&&&&/style&
&/resources&ok,这个没撒说的。注意我们的主题是基于NoActionBar的,android:windowTranslucentStatus这个属性是v19开始引入的。(二)布局文件activity_main.xml&android.support.v4.widget.DrawerLayout
&&&&xmlns:android=&http://schemas.android.com/apk/res/android&
&&&&xmlns:app=&http://schemas.android.com/apk/res-auto&
&&&&xmlns:tools=&http://schemas.android.com/tools&
&&&&android:layout_width=&match_parent&
&&&&android:layout_height=&match_parent&
&&&&&LinearLayout
&&&&&&&&android:id=&@+id/id_main_content&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&match_parent&
&&&&&&&&android:orientation=&vertical&&
&&&&&&&&&android.support.v7.widget.Toolbar
&&&&&&&&&&&&android:id=&@+id/id_toolbar&
&&&&&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&&&&&android:background=&?attr/colorPrimary&
&&&&&&&&&&&&android:fitsSystemWindows=&true&
&&&&&&&&&&&&app:popupTheme=&@style/ThemeOverlay.AppCompat.Light&/&
&&&&&&&&&TextView
&&&&&&&&&&&&android:id=&@+id/id_tv_content&
&&&&&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&&&&&android:layout_height=&0dp&
&&&&&&&&&&&&android:layout_weight=&1&
&&&&&&&&&&&&android:gravity=&center&
&&&&&&&&&&&&android:text=&HelloWorld&
&&&&&&&&&&&&android:textSize=&30sp&/&
&&&&&/LinearLayout&
&&&&&android.support.design.widget.NavigationView
&&&&&&&&android:id=&@+id/id_nv_menu&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&match_parent&
&&&&&&&&android:layout_gravity=&start&
&&&&&&&&android:fitsSystemWindows=&true&
&&&&&&&&app:headerLayout=&@layout/header_just_username&
&&&&&&&&app:menu=&@menu/menu_drawer&
&&&&&&&&/&
&/android.support.v4.widget.DrawerLayout&DrawerLayout内部一个LinearLayout作为内容区域,一个NavigationView作为菜单。&注意下Toolbar的高度设置为wrap_content。然后我们的NavigationView中又依赖一个布局文件和一个menu的文件。header_just_username.xml&?xml&version=&1.0&&encoding=&utf-8&?&
&RelativeLayout&xmlns:android=&http://schemas.android.com/apk/res/android&
&&&&&&&&&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&&&&&&&&&android:layout_height=&192dp&
&&&&&&&&&&&&&&&&android:background=&?attr/colorPrimaryDark&
&&&&&&&&&&&&&&&&android:orientation=&vertical&
&&&&&&&&&&&&&&&&android:padding=&16dp&
&&&&&&&&&&&&&&&&android:fitsSystemWindows=&true&
&&&&&&&&&&&&&&&&android:theme=&@style/ThemeOverlay.AppCompat.Dark&&
&&&&&TextView
&&&&&&&&android:id=&@+id/id_link&
&&&&&&&&android:layout_width=&wrap_content&
&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&android:layout_alignParentBottom=&true&
&&&&&&&&android:layout_marginBottom=&16dp&
&&&&&&&&android:text=&http://blog.csdn.net/lmj&/&
&&&&&TextView
&&&&&&&&android:id=&@+id/id_username&
&&&&&&&&android:layout_width=&wrap_content&
&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&android:layout_above=&@id/id_link&
&&&&&&&&android:text=&Zhang&Hongyang&/&
&&&&&ImageView
&&&&&&&&android:layout_width=&72dp&
&&&&&&&&android:layout_height=&72dp&
&&&&&&&&android:layout_above=&@id/id_username&
&&&&&&&&android:layout_marginBottom=&16dp&
&&&&&&&&android:src=&@mipmap/ic_launcher&/&
&/RelativeLayout&menu的文件就不贴了,更加详细的可以去参考。大体看完布局文件以后,有几个点要特别注意:ToolBar高度设置为wrap_contentToolBar添加属性android:fitsSystemWindows=&true&header_just_username.xml的跟布局RelativeLayout,添加属性android:fitsSystemWindows=&true&android:fitsSystemWindows这个属性,主要是通过调整当前设置这个属性的view的padding去为我们的status_bar留下空间。根据上面的解释,如果你不写,那么状态栏和Toolbar就会有挤一块的感觉了,类似会这样:ok,最后看下代码。(三)Activity的代码package&com.zhy.
import&android.os.B
import&android.support.v7.app.AppCompatA
import&android.support.v7.widget.T
public&class&MainActivity&extends&AppCompatActivity
&&&&@Override
&&&&protected&void&onCreate(Bundle&savedInstanceState)
&&&&&&&&super.onCreate(savedInstanceState);
&&&&&&&&setContentView(R.layout.activity_main);
&&&&&&&&Toolbar&toolbar&=&(Toolbar)&findViewById(R.id.id_toolbar);
&&&&&&&&setSupportActionBar(toolbar);
&&&&&&&&//StatusBarCompat.compat(this,&getResources().getColor(R.color.status_bar_color));
&&&&&&&&//StatusBarCompat.compat(this);
}没撒说的,就是setSupportActionBar。那么现在4.4的效果图是:其实还不错,有个渐变的效果。现在5.x的效果:可以看到5.x默认并非是一个渐变的效果,类似是一个深一点的颜色。在看看我们md的规范状态栏应该是一个比Toolbar背景色,稍微深一点的颜色。这么看来,我们还是有必要去为4.4做点适配工作,让其竟可能和5.x显示效果一致,或者说尽可能符合md的规范。四、调整4.4的显示方案那么问题来了?如何做呢?咱们这么看,4.4之后加入windowTranslucentStatus的属性之后,也就是我们可以用到状态栏的区域了。既然我们可以用到这块区域,那么我们只要在根布局去设置一个与状态栏等高的View,设置背景色为我们期望的颜色就可以了。于是有了以下的代码:package&com.zhy.
import&android.annotation.TargetA
import&android.app.A
import&android.content.C
import&android.graphics.C
import&android.os.B
import&android.view.V
import&android.view.ViewG
&*&Created&by&zhy&on&15/9/21.
public&class&StatusBarCompat
&&&&private&static&final&int&INVALID_VAL&=&-1;
&&&&private&static&final&int&COLOR_DEFAULT&=&Color.parseColor(&#&);
&&&&@TargetApi(Build.VERSION_CODES.LOLLIPOP)
&&&&public&static&void&compat(Activity&activity,&int&statusColor)
&&&&&&&&if&(Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.LOLLIPOP)
&&&&&&&&&&&&if&(statusColor&!=&INVALID_VAL)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&activity.getWindow().setStatusBarColor(statusColor);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&if&(Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.KITKAT&&&&Build.VERSION.SDK_INT&&&Build.VERSION_CODES.LOLLIPOP)
&&&&&&&&&&&&int&color&=&COLOR_DEFAULT;
&&&&&&&&&&&&ViewGroup&contentView&=&(ViewGroup)&activity.findViewById(android.R.id.content);
&&&&&&&&&&&&if&(statusColor&!=&INVALID_VAL)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&color&=&statusC
&&&&&&&&&&&&}
&&&&&&&&&&&&View&statusBarView&=&new&View(activity);
&&&&&&&&&&&&ViewGroup.LayoutParams&lp&=&new&ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
&&&&&&&&&&&&&&&&&&&&getStatusBarHeight(activity));
&&&&&&&&&&&&statusBarView.setBackgroundColor(color);
&&&&&&&&&&&&contentView.addView(statusBarView,&lp);
&&&&public&static&void&compat(Activity&activity)
&&&&&&&&compat(activity,&INVALID_VAL);
&&&&public&static&int&getStatusBarHeight(Context&context)
&&&&&&&&int&result&=&0;
&&&&&&&&int&resourceId&=&context.getResources().getIdentifier(&status_bar_height&,&&dimen&,&&android&);
&&&&&&&&if&(resourceId&&&0)
&&&&&&&&&&&&result&=&context.getResources().getDimensionPixelSize(resourceId);
&&&&&&&&return&
}代码的思路很简单,根据Activity找到android.R.content,在其中添加一个View(高度为statusbarHeight,背景色为我们设置的颜色,默认为半透明的黑色)。那么只需要在Activity里面去写上:StatusBarCompat.compat(this);就可以了。如果你希望自己设置状态看颜色,那么就用这个方法:StatusBarCompat.compat(this,&getResources().getColor(R.color.status_bar_color));这样的话我们就解决了4.4到5.x的适配问题,一行代码解决,感觉还是不错的。最后提一下,对于5.0由于提供了setStatusBarColor去设置状态栏颜色,但是这个方法不能在主题中设置windowTranslucentStatus属性。所以,可以编写一个value-v21文件夹,里面styles.xml写入:&resources&
&&&&&!--&Base&application&theme.&--&
&&&&&style&name=&AppTheme&&parent=&@style/BaseAppTheme&&
&&&&&/style&
&/resources&其实就是不要有windowTranslucentStatus属性。接下来,对于默认的效果就不测试了,参考上面的效果图。我们测试个设置状态栏颜色的,我们这里设置个红色。4.4 模拟器5.x 真机ok,这样就结束啦~~源码地址:
上一篇: 安卓中的基本问题之一就是对键/值对的持有。因为bundle 需要键/值对,所以你总是需要一个key。然而问题是哪里保存这些key?
下一篇: 抽象很有用,而接口(interface )是实现依赖反转的途径之一。但是我们应该正确的使用接口。 在开发中,我们得到了一个去观察用户名文字变化的需求。每当用户输入东西时,我们需要得到这个数据,做验证一类的事情。 实现这个东西第一眼看上去非常简单。因为微信这样也叫沉浸式状态栏,我就呵呵了。【wp7吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:304,415贴子:
微信这样也叫沉浸式状态栏,我就呵呵了。收藏
微信这鸟样也敢叫叫沉浸式状态栏
wp手机,苏宁易购天天爆款,嗨抢不止!正品低价,专业综合网上商城,优惠不停歇!wp手机,,全国联保,支持货到付款,苏宁易购7x24小时为您提供优质服务!
这简直欺负没用过bugme的人
那么问题来了,是老大会狗带还是麻花腾?
还有哪个渠道可以下载微信之前的版本微信这坑爹的状态栏跟bugme的沉浸式状态栏相互扯蛋,界面一切换好难看
建议先提高姿势水平
doi改的多少
没问题啊 楼主姿势不对 ?﹏﹏ bianwebber带您背单词:[六级]fling/fli?/vi.&vt.(用力)扔,抛
为啥我的微信没有
安卓md状态栏的标准就是20%黑,bugme是模仿ios标准的
万基米没有   --来自win10极速贴吧客户端
有什么问题
   --來自(和谐)大作戰客戶端
安卓萝莉泡后就是状态栏默认自带阴影。
透明(苹果那种)变色(安卓5.0)沉浸(全屏无虚拟键)78人永远分不清楚
沉浸式难道不是状态栏跟虚拟键隐藏?现在更新概念变成了变色?
微信那个是相当标准的自适应变色连虚拟键都一起变色了,上两张图,一张通话,一张微信
我们再看看贴吧,状态栏是变了(相比较原生还不标准),但是导航栏
至少比qq好看
bugme的QQ可好看了 @HatsuneRoy
Material Design
微信这个应该叫透明,颜色也很符合MD…Google的开发文档里把这种状态栏定义为Translucent Bar,透明栏…就是IOS的开发指南也是transparent,透明……倒是国内flyme和miui叫沉浸flyme这个沉浸式…应该是通过自动取色或者什么的来使应用状态栏变色的,是系统主动适配程序,所以不支持透明也也能实现状态栏沉浸…
你那状态栏不标准
我觉得我说的和你说的是同一个东西啊。
反正我觉得比qq卡就是了
原生5.1.1无压力
登录百度帐号【小安教程】告别黑黑的状态栏,几步教你沉浸状态栏 - 锋潮科技
【小安教程】告别黑黑的状态栏,几步教你沉浸状态栏
【小安教程】告别黑黑的状态栏,几步教你沉浸状态栏
安卓系统打开程序之后状态栏总是黑黑的。IOS7的出现给出了通知栏图标与程序完美融合的风格,小米发布会miui 6的出现给出了它&沉浸式状态栏&这个概念。顿时间这股风潮席卷安卓手机UI界。各种模拟沉浸式状态栏的软件也络绎不绝的出现。但大都不完美,需要用户去一个个设置,费时费力。直到Flat Style Colored Bars(中文被意译&自动沉浸式状态栏&)的出现,给我们一种手机屏幕&被扩大&&被融合&&百变&的视觉享受。还减少了手机烧屏的概率。
沉浸模式开启前后对比图:
游戏下载安装方法请点击
喜欢数码科技资讯的你记得订阅[安卓中国]。根据机哥第八定律,93.94% 爱搞机的人都关注了「好机友」微信公众号【微信号:goodjiyou】,看啥看,就差你啦~登陆[锋潮科技]官网浏览更多精彩内容(https://www.anzhuo.cn)

我要回帖

更多关于 什么是沉浸式状态栏 的文章

 

随机推荐