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

效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮

在activity的onCreate 方法里调用该方法就好了。使用时,将R.color.blue换成自己喜欢的颜色

 /**
     * 适配沉浸式状态栏,sdk 19 以上才有效
     * <br>对全屏状态做了例外处理,全屏状态改变时需要调用此方法
     */
    @TargetApi(android.os.Build.VERSION_CODES.KITKAT)
    public static void immersive(ActionBarActivity activity) {

        if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT)
            return;

        ColorDrawable bgColor = new ColorDrawable(activity.getResources().getColor(R.color.blue));
        activity.getSupportActionBar().setBackgroundDrawable(bgColor);
        Window window = activity.getWindow();
        int flags = window.getAttributes().flags;
        //非全屏
        if ((flags | WindowManager.LayoutParams.FLAG_FULLSCREEN) != flags) {

            window.setFlags(
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

            View contentView = window
                    .findViewById(Window.ID_ANDROID_CONTENT);
            contentView.setBackground(bgColor);
            contentView.setPadding(0, getStatusbarHeight(activity), 0, 0);
        } else {
            //全屏
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            View contentView = window
                    .findViewById(Window.ID_ANDROID_CONTENT);
            contentView.setBackground(bgColor);
            contentView.setPadding(0, 0, 0, 0);
        }
    }

    public static int getStatusbarHeight(Context context) {

        try {
            Class<?> c = Class.forName("com.android.internal.R$dimen");
            Object obj = c.newInstance();
            Field field = c.getField("status_bar_height");
            int x = Integer.parseInt(field.get(obj).toString());
            int y = context.getResources().getDimensionPixelSize(x);
            return y;
        } catch (Exception e) {
            e.printStackTrace();
            return (int) (context.getResources().getDisplayMetrics().density * 20 + 0.5);
        }
    }
时间: 2024-08-25 16:54:01

android 4.4以上实现沉浸式状态栏的相关文章

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

用过android手机的人都知道android使用app的时候屏幕上方的状态栏都是黑色的,就算不是黑色的都与正在打开的app颜色不同.有一种灰常不搭调的感觉.~ 今天无意中看了一下关于沉浸式状态栏的资料~~作为强迫症重度患者怎能错过? 下面就开始使用沉浸式状态栏之旅: 代码未上图先行: 沉浸式: 非沉浸式: 嗯~虽然第二张图比较模糊,但是也可以想象第一张比较好看(- ̄▽ ̄)-. 那么接下来要说的就是如何实现第一张图的那样的效果: 首先要说明的是以下方法只适合android4.4或以上的系统 an

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.

android沉浸式状态栏实现

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

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

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

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

Android App 沉浸式状态栏解决方案

伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material design 设计原则,不再是以前拿着iOS设计稿,做着Android开发.本文就其中的沉浸式状态栏这一特性,描述其兼容到4.4的实现,以及一些使用中的小细节. 前言 在4.4之前状态栏一直是黑色的,在4.4中带来了 windowTranslucentStatus 这一特性,因此可以实现给状态栏设

Android 中沉浸式状态栏实现

Android 中沉浸式状态栏实现方式如下 计算状态栏高度及调用沉浸式状态栏的相关API方法 1 package com.example.status; 2 import android.annotation.TargetApi; 3 import android.app.Activity; 4 import android.content.Context; 5 import android.os.Build; 6 import android.view.View; 7 import andro

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

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