我知道在Android 4.4 KitKat(API 19)中,状态栏是透明的。
但例如,Go Launcher Ex和其他公司可以选择使其透明,对我来说,它也在进行预KitKat(Android
我不需要root或任何特权来使用它。
下载Go Launcher Ex并亲自试用。对我来说,如果我需要根也可以。
但他们是怎么做到的?如何在KitKat之前的设备上使Android的状态栏透明?
---澄清事情---
我不是在说动作条;我指的是状态栏(通知栏)!
请看以下图片:
(注意,这是我的股票Galaxy Note 3和Android 4.3以及Go Launcher Ex。)
(我的Galaxy S2和Android4.0也同样适用。)
没有透明的状态栏:
启用透明状态栏:(我想在4.4(API 19)之前的设备上实现这一点)
用这个。:)
在super()之后和设置内容之前。
if (Build.VERSION.SDK_INT >= 19)
{
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21)
{
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true);
}
if (Build.VERSION.SDK_INT >= 21)
{
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
public static void setWindowFlag(Activity activity, final int bits, boolean state)
{
Window win = activity.getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
if (state)
{
winParams.flags |= bits;
}
else
{
winParams.flags &= ~bits;
}
}
我发现了如何在至少运行Android4.0的三星和索尼设备上获得透明的状态栏。
首先,让我解释一下为什么在大多数设备上都不可能做到这一点:
从Android的官方角度来看,在KitKat(4.4)之前没有解决方案<但是一些设备制造商,比如三星和索尼,已经在他们的专有软件中添加了这个选项。
三星使用自己的Android外皮版TouchWiz,索尼也在使用自己的系统
他们有一个自己的视图
类实现,带有额外的系统_UI u
标志,允许在4.4之前的设备上启用透明状态栏!
但证明这些标志存在并访问它们的唯一方法是使用反射
以下是我的解决方案:
解析视图标志:
int ResolveTransparentStatusBarFlag()
{
String[] libs = getPackageManager().getSystemSharedLibraryNames();
String reflect = null;
if (libs == null)
return 0;
for (String lib : libs)
{
if (lib.equals("touchwiz"))
reflect = "SYSTEM_UI_FLAG_TRANSPARENT_BACKGROUND";
else if (lib.startsWith("com.sonyericsson.navigationbar"))
reflect = "SYSTEM_UI_FLAG_TRANSPARENT";
}
if (reflect == null)
return 0;
try
{
Field field = View.class.getField(reflect);
if (field.getType() == Integer.TYPE)
return field.getInt(null);
}
catch (Exception e)
{
}
return 0;
}
将其应用于您的Windows
(在任何活动中)的装饰视图
:
void ApplyTransparentStatusBar()
{
Window window = getWindow();
if (window != null)
{
View decor = window.getDecorView();
if (decor != null)
decor.setSystemUiVisibility(ResolveTransparentStatusBarFlag());
}
}
我想可能还有其他设备制造商已经实现了这样的标志
,但我只能弄清楚这两个(因为我拥有三星和索尼设备)
我目前正在手机上运行Kitkat(4.4.2),并安装了一个应用程序。 在该应用程序中,状态栏是透明的,并在其下方显示应用程序的内容。请看图片。 图片1 图2 我应该如何在我的程序中做到这一点。 提前感谢。
在“新”Android4.3版中有一个新功能。屏幕顶部的状态栏在launcher中是透明的(我在Galaxy S3上使用三星TouchWiz),在其他一些应用中也是透明的(看起来有点像iOS 7风格)。你能告诉我如何在我自己的应用程序(Eclipse、Java)中使状态栏透明(或彩色)吗?
我使用以下布局(main_activity.xml) 具有以下样式-v21 但我仍然无法归档一个透明的状态栏 看起来像这样 但我想要这样的东西(新谷歌报摊App) 注意:我正在使用
有人知道如何使用React Native使Android状态栏透明吗? 不透明,透明。 我也在使用react导航。
我的styles.xml: 我能做的是:
我想整合一些像这样的东西: 我已经这样做了,但是我似乎不能把图像视图放在工具栏下面。没有工具栏,我可以在状态栏下制作,但是把这两者结合起来是不可能的。 这是我的布局: 在我的活动中,我做了以下工作: 我还声明了一个 styles-v21.xml 文件: 并将其设置为Photo活动的默认样式。我已经尝试将工具栏放在FrameLayout中,但这样做我的工具栏只会隐藏,如下所示: 提前感谢。 已修复,