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

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

添加一个demo源代码:

https://github.com/ws123/StatusDemo

public class MainActivity extends Activity {

    @Override
    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 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView

        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#009959" />

    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="#ff669d"/>

</LinearLayout>

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

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

    android:fitsSystemWindows="true"
    android:clipToPadding="true"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

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

    android:background="#ffffff"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#009959" />

    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="#ff669d"/>

</LinearLayout>

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

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:fitsSystemWindows="true"
        android:clipToPadding="true"

        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#009959"
        android:text="你好。请问你有男朋友吗"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="#ff669d"/>

</LinearLayout>

就是那两行红色的代码,放在绿色的textView上。这样。就会是以下的效果:

这就是我们想要的了。

时间: 2024-11-05 21:56:13

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

Android 沉浸式状态栏

效果图 android 5.0 以上 android 4.4 API 19 以上都是原生安卓系统的效果,具体到国内的各种各样改过的系统可能会有细微差别,测试过小米和华为的机器效果基本一样. 实现 1.修改主题属性 方法一: 在values-v19文件夹下声明AppTheme为透明状态栏,代码如下 1 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 2 <!-- C

Android 沉浸式状态栏 实现方式二 ( 更简单 )

以前写过一个沉浸式状态栏 的实现方式 Android 沉浸式状态栏 实现方式一 现在有个更为简单的实现方式 . 相关链接 http://www.apkbus.com/forum.php?mod=viewthread&tid=255929&extra=page%3D3%26filter%3Dsortid%26orderby%3Ddateline%26sortid%3D12 1.效果图 demo 的 github 地址  https://github.com/zyj1609wz/Android

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

之前的Android沉浸式状态栏实现并没有考虑软键盘的影响,接下来的内容将会针对这个问题给出解决方式,先看一下效果图 这个是一个留言板的效果图: 即弹出软键盘的时候并不会导致整个布局上移. 详细怎样实现?依照下面步骤进行设置: 1.布局文件里声明例如以下 <activity android:name="com.storm.durian.activity.LeaveMessageDetailsActivity" android:screenOrientation="por

Android沉浸式状态栏 + scrollView顶部伸缩 + actionBar渐变

最近需求要做一个拉缩渐变的状态栏,往上拉的时候,需要显示actionBar,这个过程是渐变的,顶部的图片背景能实现拉缩,并且还要实现状态栏沉浸式 效果如如下: 实现状态栏的透明化 实现ScrollView的拉缩 实现ActionBar的渐变 实现 1.至于试下实现ScrollView的拉缩这个效果很简单重写onTouchEvent方法,利用滑动的垂直方向的距离,然后在设置图片的大小 这里要注意的是:在手指释放的时候需要进行恢复图片的高度如果有兴趣的话可以加入Android工程师交流Q群:7520

android -------- 沉浸式状态栏和沉浸式导航栏(ImmersionBar)

android 4.4以上沉浸式状态栏和沉浸式导航栏管理,包括状态栏字体颜色,适用于Activity.Fragment.DialogFragment.Dialog,并且适配刘海屏,适配软键盘弹出等问题 ImmersionBar -- android 4.4以上沉浸式实现 直接看效果图,最下面有各个版本的效果图 android studio 引入依赖 implementation 'com.gyf.immersionbar:immersionbar:2.3.3' eclipse immersion

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

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

android沉浸式状态栏实现

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

Android沉浸式状态栏攻略

前言 这里不讨论[沉浸式]这个词用得好不好, 大家听得懂就行. 这篇文章主要是我在实际项目中的一些经验, 整理出来和大家分享, 欢迎探讨. 由于实习一直是996, 没时间做总结, 今天突然觉得这样的工作让我都忘了生活了, 是时候做个了断了. 写这篇文章的时候已经是23:44, 来不及贴一些demo, 但是这里的代码都是曾经的项目中摘出来的, 是可以运行的, 但我现在没有真的执行一遍. 注意所有的代码都只在android 4.4及以上有效. 考虑 根据实际项目的不同, 可能选择的沉浸式实现策略也会

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

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