完整编辑,因为显然不清楚这确实是一个编程问题
在Galaxy S4上,默认情况下通知栏是透明的。使用内置的“Bubbles”壁纸时,如下所示:
现在我开发了自己的动态壁纸。为简单起见,我只使用0xFFFF0000
填充可用画布作为屏幕截图,但通常它会显示不同的场景。在Galaxy S4上,我的壁纸没有显示透明的通知栏,但默认的黑色:
我注意到有时候我的壁纸也显示了一个透明的条形,这里也是锁屏。但是,我无法可靠地重现这种行为。
我的问题很简单:有没有办法从我的壁纸代码或清单中可靠地启用透明通知栏?实际上,透明和黑色条之间的不可预测的切换使得用户体验比使用始终黑色条更糟糕。
答案 0 :(得分: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与我分享这面旗帜。
答案 1 :(得分:0)
很抱歉,除非您要制作自定义ROM,否则无法进行此操作,除非您只想更改应用的状态栏。
这需要大量的工作。
首先,您需要将Theme.NoTitleBar.Fullscreen添加到清单
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
然后,一旦你完成了,你需要创建一个代表状态栏的标准布局,这意味着你必须添加时间,并且还接收来自其他应用程序的所有通知,我个人不知道如何这样做,但我确信有办法。
如果你真的想要做这个好事,那你就很难过。