关闭

android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)

47214人阅读 评论(17) 收藏 举报
分类:

这个特性是andorid4.4支持的,最少要api19才可以使用。下面介绍一下使用的方法,非常得简单:

  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.   
  8.         //透明状态栏  
  9.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  10.         //透明导航栏  
  11.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  12.   
  13.     }  
  14.   
  15.   
  16. }  


  1. //透明状态栏  
  2. getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  3. //透明导航栏  
  4. getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  

只要加入这两行代码,就可以实现沉浸式通知栏了。效果如图:



给大家看看这个界面的布局:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="#ffffff"  
  6.     android:orientation="vertical"  
  7.     tools:context=".MainActivity">  
  8.   
  9.   
  10.     <TextView  
  11.   
  12.         android:layout_width="match_parent"  
  13.         android:layout_height="100dp"  
  14.         android:background="#009959" />  
  15.   
  16.   
  17.     <Button  
  18.         android:layout_width="100dp"  
  19.         android:layout_height="50dp"  
  20.         android:background="#ff669d"/>  
  21.   
  22. </LinearLayout>  

是一个垂直的流布局,但这样,其实还是有问题的,我在textView里面加一些文字,就是绿色的那一块,大家看一下效果:


大家看到了吧,文字和状态栏重叠在一起了,这肯定是不行的,此时需要添加下面的代码:


  1. android:fitsSystemWindows="true"  
  2. android:clipToPadding="true"  

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.       
  6.     android:fitsSystemWindows="true"  
  7.     android:clipToPadding="true"  
  8.   
  9.     android:background="#ffffff"  
  10.     android:orientation="vertical"  
  11.     tools:context=".MainActivity">  
  12.   
  13.   
  14.   
  15.     <TextView  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="100dp"  
  18.         android:background="#009959" />  
  19.   
  20.   
  21.     <Button  
  22.         android:layout_width="100dp"  
  23.         android:layout_height="50dp"  
  24.         android:background="#ff669d"/>  
  25.   
  26. </LinearLayout>  

大家看红色的那部分,加入那两行以后,界面仍然会是沉浸式的,但状态栏那部分,就不会再重叠了,像加了padding一样,如下图:


大家看图,绿色的textView和红色的一个button都被下移了,状态栏是白色的,是背景linearLayout的颜色。很明显,这也不是我们想要的,我们希望状态栏和我们放在顶部的控件是同一个颜色,同时,控件内容也不和状态栏重复,其实,只要把那两行代码放到我们顶部的控件就可以了。代码如下:


  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="#ffffff"  
  6.     android:orientation="vertical"  
  7.     tools:context=".MainActivity">  
  8.   
  9.   
  10.   
  11.     <TextView  
  12.         android:fitsSystemWindows="true"  
  13.         android:clipToPadding="true"  
  14.   
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="100dp"  
  17.         android:background="#009959"  
  18.         android:text="你好,请问你有男朋友吗"/>  
  19.   
  20.   
  21.     <Button  
  22.         android:layout_width="100dp"  
  23.         android:layout_height="50dp"  
  24.         android:background="#ff669d"/>  
  25.   
  26. </LinearLayout>  
就是那两行红色的代码,放在绿色的textView上,这样,就会是下面的效果:

这就是我们想要的了。




20
3
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android 沉浸式状态栏的实现方法、状态栏透明

原文:点击访问 现在越来越多的软件都开始使用沉浸式状态栏了,下面总结一下沉浸式状态栏的两种使用方法 注意!沉浸式状态栏只支持安卓4.4及以上的版本状态栏:4.4上是渐变色,5.0上是完全透明,本文模拟器为4.4演示 效果图: 注意!两种方法的区别:第一种:为顶部栏跟随当前...
  • fan7983377
  • fan7983377
  • 2016-06-07 16:23
  • 42945

Android状态栏微技巧,带你真正理解沉浸式模式

记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersiv...
  • sinyu890807
  • sinyu890807
  • 2016-08-23 07:32
  • 105446

android沉浸式状态栏实现

版权声明,转载此处:http://blog.csdn.net/s003603u/article/details/47133723 传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别。这样就在一定程度上牺牲了视觉宽度,界面面积变小。 沉浸模式的状态栏和主界面完全融为了一...
  • huningjun
  • huningjun
  • 2015-11-20 13:50
  • 1129

Android沉浸式状态栏实现

最近要做沉浸式状态栏,公司另外一个部门的同事整理了相关内容,这里做一个记录,以备查询 沉浸式状态栏技术实现 这部分是技术实现的概述,重点看第5部分,实现建议。 1.自定义状态栏背景色(5.0) 5.0以上的应用中可以通过调用系统接口getWindow().setStatusB...
  • u011936381
  • u011936381
  • 2015-09-17 16:10
  • 3785

【Android实战】沉浸式状态栏实现(上)

Android在4.4的时候增加了透明状态栏与导航栏的功能,依托于这个新特性,我们可以开始跟随潮流,实现Android的沉浸式状态栏
  • s003603u
  • s003603u
  • 2015-07-29 21:20
  • 6747

Android沉浸式状态栏实现(半透明浮动状态栏)Activity全屏显示

看到好多人对“沉浸式”这个词的释义,学到了点,不过这里我只是关注通知栏是否透明,且不影响我APP UI的布局即可。 先来看对比图: 默认的造型: 沉浸式处理后的造型: 实现步骤如下: Step1. 下载SystemBarTint开源库,拷贝或引入其中的SystemBarTin...
  • ahuyangdong
  • ahuyangdong
  • 2016-06-21 15:24
  • 6189

Android沉浸式状态栏的两种实现方式

首先,需要注意的是,只有大于等于4.4版本才支持沉浸式状态栏的效果,沉浸式状态栏可以使用开源库SystemBarTint,不过好像作者很久没有进行更新了,所以不推荐使用了。 第一种方式,参考了鸿洋大神,原链接在这:http://blog.csdn.net/lmj623565791/article/...
  • u010623588
  • u010623588
  • 2016-05-17 17:52
  • 408

Android沉浸式状态栏demo代码

  • 2015-06-11 15:14
  • 1.60MB
  • 下载

android沉浸式状态栏的最简单实现

android 沉浸式状态栏的最简单实现 想实现沉浸式状态栏,网上找了很多有修改res目录下 的style.xml文件. 有在布局里面添加. 在github上看到一个开源项目,他实现沉浸式非常简单,一种非常简单的实现沉浸式状态栏的代码: 在基类BaseActivity 的onCreat()方...
  • samcasa
  • samcasa
  • 2016-11-30 16:34
  • 1140

Android沉浸式状态栏(透明状态栏)最佳实现

Android沉浸式状态栏(透明状态栏)最佳实现 在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,会出现上图中左侧的画面,在屏幕的顶部有一条黑色的状态栏,和应用的风格非常不协调;为了提供更好的界面交互,google在Android4.4以后提供了设置沉浸式状态栏的...
  • zephyr_g
  • zephyr_g
  • 2016-12-06 16:58
  • 4957
    个人资料
    • 访问:10941554次
    • 积分:76714
    • 等级:
    • 排名:第23名
    • 原创:506篇
    • 转载:914篇
    • 译文:4篇
    • 评论:2258条
    打赏
    如果您认为本博客不错,读后觉得有收获,不妨打赏赞助我一下,让我有动力继续写出高质量的博客。



    赠人玫瑰,手有余香。分享技术,传递快乐。

    有心课堂,传递的不仅仅是技术!

    QQ交流群:250468947

    有心课堂会员,请加入VIP QQ交流群:213725333

    github
    我的视频
    博客专栏
    最新评论