Android三句代码使用沉浸式状态栏

用过android手机的人都知道android使用app的时候屏幕上方的状态栏都是黑色的,就算不是黑色的都与正在打开的app颜色不同。有一种灰常不搭调的感觉。~

今天无意中看了一下关于沉浸式状态栏的资料~~作为强迫症重度患者怎能错过?

下面就开始使用沉浸式状态栏之旅:

代码未上图先行:

沉浸式:

非沉浸式:

嗯~虽然第二张图比较模糊,但是也可以想象第一张比较好看(~ ̄▽ ̄)~。

那么接下来要说的就是如何实现第一张图的那样的效果:

首先要说明的是以下方法只适合android4.4或以上的系统

android4.4也就是api19~所以我们在res文件夹下新建一个values-v19,然后再新建一个style.xml文件。

在style上写以下代码:

指定style为noactionbar而且半透明

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor" >
    </style>
</resources>

然后运行程序可以看到,状态栏与app顶部颜色是一致的,但是如果布局文件的顶部写有其它内容的话会发现布局文件上的内容会与状态栏上的内容重合~~这肯定是不允许的。

有没有方法解决呢?

在使用了沉浸式状态栏的布局文件上写上以下两句话:

然后在要使用沉浸式状态栏的布局文件上写上两句代码:

  android:clipToPadding="true"
  android:fitsSystemWindows="true"

就可以解决这个问题了~

但是在某些情况下会发现写上这两句代码之后,状态栏颜色会是白色或者其它颜色~这是因为写上这两句代码的地方的颜色是与状态栏颜色是一样的。

也就是说如果有一个LinearLayout的背景色是红色,那么使用了沉浸式状态栏的情况下,在这个linearLayout写上以上两句代码之后状态栏也会变成红色。

可以看到实际上就三句代码~

 <style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor" >
 android:clipToPadding="true"
  android:fitsSystemWindows="true"

最后说一下:

每个app都有那么多的activity如果每个activity都写一次上面两句代码未免有点烦人,所以在某些情况下是可以“偷懒”的。比如很多app都是用toolbar或actionbar之类的。

那么状态栏的颜色就要与app上的这个bar的颜色一致。那么我们只需自己定义一个actionbar然后在布局上面写上以上两句代码那么在使用到这个自定义actionbar的activity自然那两句代码自然会生效啦!

以下就是例子:

首先是自定义actionbar的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rellay_action_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/maincolor"
    android:clipToPadding="true"
     android:fitsSystemWindows="true"
   >
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/top_navigation_height"
    >
     <ImageButton
        android:id="@+id/btn_action_bar_left"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:background="@drawable/common_back_btn_bg_pressed"
        android:contentDescription="@null"
        android:padding="20dp"
        android:visibility="gone" />

    <TextView
        android:id="@+id/tv_action_bar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:singleLine="true"
        android:textColor="#ffffff"
        android:textSize="20sp" />

    <ImageButton
        android:id="@+id/btn_action_bar_right"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp"
        android:contentDescription="@null"
        android:padding="20dp"
        android:visibility="gone" />
</RelativeLayout>

</RelativeLayout>

然后是使用这个自定义actionbar的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content" >

    <com.javy.test.view.CustomActionBar
        android:id="@+id/action_bar_act_detail_intro"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </com.javy.test.view.CustomActionBar>
</LinearLayout>

就这样~~ok了

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-28 02:08:15

Android三句代码使用沉浸式状态栏的相关文章

android 4.4以上实现沉浸式状态栏

效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮 在activity的onCreate 方法里调用该方法就好了.使用时,将R.color.blue换成自己喜欢的颜色 /** * 适配沉浸式状态栏,sdk 19 以上才有效 * <br>对全屏状态做了例外处理,全屏状态改变时需要调用此方法 */ @TargetApi(android.os.Build.VERSION_CODES.KITKAT) public static void immersive(ActionBarActiv

沉浸式状态栏的三种实现方式

沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏.本文将介绍三种方式去实现沉浸式状态栏. Google从android kitkat(Android 4.4)开始, 给我们开发者提供了一套能透明的系统ui样式给状态栏和导航栏,这样的话就不用向以前那样每天面对着黑乎乎的上下两条黑栏了,还可以调成跟Activity一样的样式,形成一个完整的主题,和IOS7.0以上系统一样了.首先看下效果 三种方式实现沉

Android 4.4沉浸式状态栏的实现

要实现Android 4.4上面的沉浸式状态栏要用到开源项目SystemBarTint(https://github.com/hexiaochun/SystemBarTint) public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.

三步实现沉浸式状态栏(即状态栏与APP同色)

本篇实现的是沉浸式状态栏.先明确下概念,什么是状态栏?直接上图: 什么是沉浸式状态栏?示例图如下: 非沉浸式状态栏                                                                        沉浸式状态栏         其实,实质上就是使手机状态栏的颜色改变,使其成为自己想要的颜色.如果把它设置成和APP主色调相同,这样看上去就会好看许多.至于叫法,网上都这么叫,就不用深究它了.下面介绍如何实现,其实很简单,只需三步: 前提:建

android沉浸式状态栏实现

传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这样就在一定程度上牺牲了视觉宽度,界面面积变小. 沉浸模式的状态栏和主界面完全融为了一体,在设计上有不同的视觉感受. 我们先上两张图,很容易看出区别:        Android在4.4的时候增加了透明状态栏与导航栏的功能,依托于这个新特性,我们可以开始跟随潮流,实现Android的沉浸式状态栏 其实上图展示的这个关于界面的代码非常简单 /** * 关于界面 * * @author SuS * @time 2015.07.29

81.Android之沉浸式状态栏攻略

转载:http://blog.csdn.net/lmj623565791/article/details/48649563/ 一.概述 近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图: 关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去 为什么在国内会有很多用户把 ?透明栏?(Translucent Bars)称作 ?沉浸式顶栏??上面了解了解,请勿指点我说的博文标题起得不对,thx. 恩,接下来正题. 首先只有大

教程分享:如何实现Android沉浸式状态栏——教你让你的状态栏变个色!

一.概述 近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图: 关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去了解下. 恩,接下来正题. 首先只有大于等于4.4版本支持这个半透明状态栏的效果,但是4.4和5.0的显示效果有一定的差异,所有本篇博文内容为: 如何实现半透明状态栏效果在大于4.4版本之上. 如何让4.4的效果与5.0的效果尽可能一致. 看了不少参考文章,都介绍到这个库,大家可以了解:SystemBarT

Android 沉浸式状态栏攻略 让你的状态栏变色吧

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/48649563: 本文出自:[张鸿洋的博客] 一.概述 近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图: 关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去 为什么在国内会有很多用户把 ?透明栏?(Translucent Bars)称作 ?沉浸式顶栏??上面了解了解,请勿指点我说的博文标题起得不对

Android 沉浸式状态栏及悬浮效果

转载请注明出处 http://blog.csdn.net/xiaoyuan511 一.概述 现在大多数的电商APP的详情页长得几乎都差不多,几乎都是上面一个商品的图片,当你滑动的时候,会有Tab悬浮在上面,这样做用户体验确实不错,如果Tab滑上去,用户可能还需要滑下来,在来点击Tab,这样确实很麻烦.沉浸式状态栏那,郭霖说过谷歌并没有给出沉浸式状态栏这个明白,谷歌只说了沉浸式模式(Immersive Mode).不过沉浸式状态栏这个名字其实听不粗,随大众吧,但是Android的环境并没有IOS环