`

Android App状态栏变色:ColorfulStatusBar

阅读更多
适用于版本大于等于19以上。
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;

/**
 * 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("#20000000");

    @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);
            }
            return;
        }

        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 = statusColor;
            }
            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 result;
    }
}


用法:

Activiy onCreate中添加:
StatusBarCompat.compat(this);

如果需要制定状态栏颜色,使用此方法:
StatusBarCompat.compat(this, 0xFFFF0000);


https://github.com/hongyangAndroid/ColorfulStatusBar
http://www.open-open.com/lib/view/open1460378891143.html

为Android4.4以上系统的状态栏和导航栏填充颜色
https://github.com/jgilfelt/SystemBarTint
分享到:
评论

相关推荐

    android 沉浸式+变色状态栏 Demo

    在Android开发中,沉浸式(Immersion)状态栏和变色状态栏是提升应用用户体验的重要设计元素。这两种技术主要用于提供更美观、更具沉浸感的界面,使得应用内容能够更好地延伸到屏幕顶部,与状态栏融为一体。本文将...

    Unity显示Android手机状态栏

    本文将详细讲解如何在Unity中实现显示Android手机的状态栏,并探讨透明状态栏和Android系统的黑底状态栏设置。 首先,我们要了解Unity引擎本身并不直接支持对Android状态栏的操作,这需要借助于Java插件或者Unity的...

    Android自定义状态栏颜色与应用标题栏颜色一致

    在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...

    Android内容覆盖透明状态栏下实现全屏模式下带状态栏的效果

    在Android应用开发中,全屏模式并同时保持状态栏可见且部分内容覆盖状态栏是一种常见的设计需求,这可以为用户带来沉浸式的体验。标题所提到的"Android内容覆盖透明状态栏下实现全屏模式下带状态栏的效果"正是针对这...

    Android沉浸式状态栏

    在Android开发中,"沉浸式状态栏"是一个重要的设计概念,它使得应用界面可以延伸到设备的状态栏区域,提供了一种更加美观、无边界的视觉体验。这一特性自Android 4.4(KitKat)版本开始引入,为开发者提供了更多创新...

    uni-app nvue沉浸式状态栏(线性渐变色).vue

    uni-app nvue沉浸式状态栏(线性渐变色).vue

    Android状态栏一体化(沉浸式)的实现(Eclipse版)

    在Android应用开发中,"状态栏一体化"或"沉浸式状态栏"是一种常见的设计手法,它使得应用界面能够无缝地延伸到状态栏区域,提供更美观、统一的视觉体验。在Eclipse环境下实现这一功能虽然相对较为繁琐,但仍然可以...

    android状态栏显示

    在Android开发中,状态栏(StatusBar)是用户界面不可或缺的一部分,它显示了系统时间、电池状态、网络连接等重要信息。有时候,开发者需要对状态栏进行定制,例如改变颜色、图标或者隐藏/显示状态栏,以实现特定的...

    Unity3D Android 状态栏

    在Android平台上,Unity3D允许开发者实现丰富的用户界面,包括控制状态栏和虚拟按键的功能。本文将深入探讨如何在Unity3D 5.3.4版本中实现在Android 2.0系统上显示状态栏和虚拟按键,并支持沉浸式透明效果。 首先,...

    Android透明状态栏demo

    在Android开发中,透明状态栏(Transparent Status Bar)是一种流行的设计趋势,它使得应用界面能够延伸至设备的状态栏区域,创造出更加沉浸式的用户体验。透明状态栏允许内容无缝地过渡到状态栏下方,使得整体视觉...

    android沉浸式状态栏 布局可以顶到状态栏上

    在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种设计趋势,它使得应用内容可以延伸到手机屏幕的状态栏区域,提供更沉浸式的用户体验。这种效果常见于全屏游戏或视频播放等应用场景,目的是减少界面...

    Android自定义状态栏颜色

    状态栏是Android设备顶部显示时间、通知图标以及网络状态的部分,而自定义状态栏颜色可以使应用的标题栏与状态栏颜色保持一致,为用户提供更为沉浸式的体验。下面我们将深入探讨如何实现这一功能。 首先,我们需要...

    Android-自定义Android平台的状态栏

    在Android应用开发中,自定义状态栏是一种常见的需求,它能提供更加个性化和沉浸式的用户体验。状态栏一体化指的是让应用的界面与系统状态栏无缝融合,通常涉及到颜色、透明度以及在不同场景下的动态变化。在本教程...

    Android隐藏状态栏和标题栏,相当于全屏效果

    Android 隐藏状态栏和标题栏,实现全屏效果 Android 操作系统中,状态栏和标题栏是默认情况下显示的,但是有时候,我们需要隐藏它们以实现全屏效果。隐藏状态栏和标题栏可以通过两种方式来实现:使用预定义样式和...

    Android-Android改变状态栏颜色状态栏透明

    在Android应用开发中,改变状态栏的颜色和实现透明效果是一项常见的需求,这可以让应用程序界面更加美观,提升用户体验。本文将详细讲解如何在Android中实现这一功能。 首先,我们需要理解Android的状态栏。状态栏...

    Android APP开发入门:使用Android Studio环境 配套范例程序1-6章

    Android的通知系统允许应用在状态栏中向用户发送消息,即使应用不在前台运行。这一章会教你如何创建和管理通知,以及如何使用广播接收器监听系统事件或自定义事件,使得应用可以在后台运行时也能响应特定事件。 每...

    Android沉浸式状态栏 一体化状态栏信号栏

    - **启用方式**:Android 4.4 (KitKat) 引入了透明状态栏的支持,可以通过设置`Window`的` FLAG_FULLSCREEN` 和 `SYSTEM_UI_FLAG_LAYOUT_STABLE` 以及 `SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN` 来实现。 - **API支持**...

    AndroidAPP开发入门教程.pdf

    Android APP 开发入门教程 Android APP 开发入门教程主要介绍了 Android APP 的开发流程,从 SDK 下载、开发环境搭建、代码编写、APP 打包等步骤一一讲解。本教程通过实践操作,带领读者一步步完成 Android APP 的...

    Android App 隐藏显示标题栏、状态栏、导航栏

    在Android应用开发中,隐藏或显示标题栏、状态栏以及导航栏是常见的需求,这有助于创建沉浸式用户体验或者根据设计需求调整界面布局。本篇将深入探讨如何在Android中实现这些功能。 首先,我们来讨论如何隐藏和显示...

    Android源代码:沉浸式状态栏

    在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种流行的设计趋势,它能够提供更为沉浸式的用户体验,让应用的内容尽可能地充满整个屏幕,减少了状态栏对视线的干扰。这种设计通常与全屏显示、游戏或者...

Global site tag (gtag.js) - Google Analytics