android - 如何检查 Android 中的状态栏颜色?

标签 android icons statusbar

如何查看 Android 中的状态栏颜色?

为什么我需要检查这个?我根据 the design guidelines 创建了状态栏图标但是在某些设备(Samsung Galaxy S)上,状态栏是黑色的,并且它运行的是 Android 2.1。

状态栏图标的建议在 Android 2.3 (Nexus S) 和模拟器(较早的 Android 2.1)中看起来很棒,默认的浅灰色状态栏。然而,推荐用于 pre-2.3 的黑色图标在 Samsung Galaxy S 上看起来并不清晰。

如果 Android 运行 2.1 或 2.2 且状态栏为黑色,我想提供一个白色图标。

基本上,问题在于 Android 设计指南并没有真正涵盖像 Samsung Galaxy S 这样更改了 UI 的手机。例如,运行 Android 2.1 的 Samsung Galaxy S 应该有一个浅灰色的状态栏,但它有一个黑色的一。这不符合 Google 提供的设计指南。

最佳答案

我开发了以下方法来猜测状态栏背景的光值。它实际上获得了一个状态栏项目的背景颜色,但我假设整个状态栏应该有相似的颜色。我使用这种方法来区分是加载我的状态通知图标的黑色版本还是白色版本。

/**
 * Returns estimated value of the lightness of the status bar background
 * @return
 */
private int getStatusBarBackgroundLightValue()
{
    // better this than nothing
    Drawable bg = getResources().getDrawable(android.R.drawable.status_bar_item_background);
    int height = Math.max(1, bg.getIntrinsicHeight());
    int width = Math.max(1, bg.getIntrinsicWidth());
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    bg.setBounds(0, 0, width, height);
    bg.draw(canvas);

    long sum = 0;
    for (int x=0; x<width; x++){
        for (int y=0; y<height; y++){
            int color = bitmap.getPixel(x, y);
            int r = (color >> 16) & 0xFF;
            int g = (color >> 8) & 0xFF;
            int b = (color) & 0xFF;
            int max = Math.max(r, Math.max(g, b));
            int min = Math.min(r, Math.min(g, b));
            int l = (min + max)/2;
            sum = sum + l;
        }
    }
    bitmap.recycle();
    bitmap = null;
    canvas = null;
    bg = null;
    sum = sum / (width * height);
    // should be [0..255]
    return (int)Math.min(255, Math.max(sum, 0));
}

关于android - 如何检查 Android 中的状态栏颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739927/

相关文章:

android - 带有 NestedScrollView 的 CoordinatorLayout 不会使用 adjustResize 调整大小

Android:损坏的 PreferenceActivity View

python - 在 shell 中打印图标

css - 如何使用纯 CSS 将基于百分比的定位应用于背景图像 Sprite ?

android - tabhost/tabbar 图标不显示

Windows 10 Mobile - 无法隐藏状态栏(StatusBar 在上下文中不存在)

android - 我的应用程序使用 Webview 时总是崩溃?

android - 模拟 java.lang.AssertionError : Verification failed: call 1 of 1: was not called

android - 如果应用程序处于全屏模式,是否可以在通知栏上显示通知?

vim - 如何更改 vim 状态行颜色?