1

完整编辑,因为显然不清楚这确实是一个编程问题

在 Galaxy S4 上,通知栏默认是透明的。当使用内置的“泡泡”壁纸时,例如如下所示:

带有气泡壁纸的通知栏

现在我开发了自己的动态壁纸。为了简单起见,我只是用可用的画布填充0xFFFF0000屏幕截图,但通常它会显示不同的场景。在 Galaxy S4 上,我的壁纸没有显示透明的通知栏,而是默认的黑色:

带有我的壁纸的通知栏

我注意到有时我的壁纸在锁屏上也会显示一个透明条。但是,我无法可靠地重现该行为。

我的壁纸透明条

我的问题很简单:有没有办法可靠地从我的壁纸代码或清单中启用透明通知栏?实际上,透明条和黑条之间不可预知的切换使用户体验比只使用始终黑条更糟糕。

4

2 回答 2

1

这在无根 S4 上确实是可能的:

public static boolean setTransparentNotificationBarTouchWiz(View view) {
    try {
        Field field = View.class.getDeclaredField("SYSTEM_UI_FLAG_TRANSPARENT_BACKGROUND");
        Class<?> t = field.getType();
        if (t == int.class) {
            int value = field.getInt(null);
            view.setSystemUiVisibility(value);
            return true;
        }
    } catch (NoSuchFieldException e) {
    } catch (IllegalAccessException e) {
    }

    return false;
}

感谢 Kevin @ TeslaCoil 与我分享这面旗帜。

于 2013-08-26T07:32:19.247 回答
0

抱歉,除非您正在制作自定义 ROM,否则这是不可能的,除非您只想为您的应用更改状态栏。

这将需要大量的工作。

首先,您需要将 Theme.NoTitleBar.Fullscreen 添加到清单中

 <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    >

然后一旦你完成了你需要创建一个代表状态栏的标准布局,这意味着你必须添加时间,并且还要接收来自其他应用程序的所有通知,我个人不知道该怎么做,但是我确信有办法。

如果你真的想做到这一点,那么你将面临一段艰难的时期。

于 2013-06-05T10:11:21.467 回答