当前位置: 首页 > 知识库问答 >
问题:

Lollipop:在statusBar后面绘制,颜色设置为透明

龙永逸
2023-03-14
<item name="android:statusBarColor">@android:color/transparent</item>

现在我需要在它后面绘制,但我不能在它后面得到任何视图绘制。我知道如何使用WindowtralucentStatus属性来实现,但我不想使用此属性,因为它将忽略设置为透明的statusBar的颜色。

共有1个答案

阎智
2023-03-14

方法1:

要实现完全透明的状态栏,必须使用StatusBarcolor,这只在API21及以上版本上可用。WindowtralucentStatus在API19及以上版本中可用,但它为状态栏添加了一个有色背景。但是,设置WindowsTranslucentStatus确实实现了将StatusBarcolor更改为透明的一件事:它设置system_ui_flag_layout_stablesystem_ui_flag_layout_fullscreen标志。获得同样效果的最简单方法是手动设置这些标志,这有效地禁用了Android布局系统强加的插入,让您自己解决问题。

oncreate方法中调用这一行:

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
<item name="android:statusBarColor">@android:color/transparent</item>
getWindow().setStatusBarColor(Color.TRANSPARENT);

这种方法的好的一面是,同样的布局和设计也可以在API19上使用,将透明状态栏换成有色半透明状态栏。

<item name="android:windowTranslucentStatus">true</item>

方法2:

如果您只需要在状态栏下绘制背景图像,而不是在其后面放置视图,这可以通过简单地将活动主题的背景设置为所需的图像并设置状态栏透明度来完成,如方法#1所示。这是我几个月前为Android Police文章创建截图的方法。

 类似资料:
  • 我的目标是使特定的颜色在图像上透明,就像在游戏的平铺中一样,在加载时忽略一种普通的背景色。 我所读到的 我添加到默认值的代码。JAVA 使图像可变提供了更好的结果,但仍然没有从图像中减去。总体而言,在使用滤镜后,它似乎是作为整个图像上方的滤镜工作的,并且没有搜索我设置的颜色,因此颜色总是存在,并且不排除不取决于所使用的模式。 第二种选择 仅使用一个600x600 px png文件将应用程序加载时间

  • 如何将背景颜色设置为透明

  • 通过RGB值设置3D地球的表面颜色。默认颜色是 #FFFFFF: // 颜色的参数可以是字符串 "#FF0000" 或者是十六进制数值 0xFF0000 controller.setSurfaceColor("#FF0000"); //controller.setSurfaceColor(0xFF0000);

  • 我使用下面的POV-Ray循环在其他颜色空间绘制sRGB坐标。环路只沿着外表面产生点,然后用三角形连接它们。因为sRGB空间是一种扭曲的立方体,这意味着6个外表面和8个顶点。 这很有效,因为几乎所有的颜色空间都是三维的。以下是一个输出示例: 不过,我想对CMYK颜色空间也这么做。我遇到的问题是,它有4个参数,而不是3个。同样,我只想在最外面的曲面上绘制点,并用三角形连接它们。我不认为产生的颜色立体

  • 自定颜色设置 对于大多数色彩管理工作流程,最好使用 Adobe Systems 已经测试过的预设颜色设置。只有在色彩管理知识很丰富并且对自己所做的更改非常有信心的时候,才建议您更改特定选项。 自定选项完成后,可以将它们保存为预设。保存颜色设置确保您可以再次使用它们并与其他用户或应用程序共享。 要将颜色设置保存为预设,请单击 “颜色设置”对话框中的“存储”。要确保应用程序在 “颜色设置”对话框中显示

  • 我需要将不透明度的值设置为xml drawable中的颜色。但当我尝试添加两个不透明度值(#20C0C0C0)时,就不起作用了。颜色看起来完全透明。 这是我的代码。。。 有人有主意吗?谢谢你的帮助。