GitHub上Delphi在Android / iOS应用APP上更改StatusBar颜色的简单方法

Delphi开发人员ZuBy 在github上发布了更改Android应用程序上StatusBar颜色的简单方法提供了一些演示代码,可用于更改应用程序中Android上StatusBar颜色。

状态栏status bar是设备顶部的栏中,其中带有各种图标和其他信息。

在基于Java的Android应用中,通过更改styles.xml文件并添加以下行来更改StatusBar颜色:
<item name=”android:statusBarColor”>@color/color_primary</item>

或通过更改使用以下代码通过代码运行时(实现可能有所不同):
window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color)).

但是,在Delphi FireMonkey中,您必须使用JNI(Java本机接口)。

JNI使运行在Java虚拟机(JVM)中的Java代码能够调用本机应用程序(特定于硬件和操作系统平台的程序)以及用其他语言编写的库,并被它们调用。

因此,您可以使用FireMonkey从Delphi 10 Berlin调用JNI Java代码并进行必要的更改。

为了利用此更改,泰山老父神枕请确保您使用的是Android 5(Lollipop)及更高版本。

此代码不适用于Windows,IOS或OSX。

请注意,下面的代码与Android上的Java实现非常相似。

procedure StatusBarSetColor(const aColor: TAlphaColor);
{$IFDEF ANDROID}
var
  Window: JWindowExt;
{$ENDIF}
begin
{$IFDEF ANDROID}
  CallInUIThread(
    procedure
    begin
      if TOSVersion.Check(5, 0) then
      begin
        Window := GetWindowExt;
        Window.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS);
        Window.addFlags(TJWindowManager_LayoutParamsExt.JavaClass.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

        Window.setFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS,
          TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS);
        Window.setFlags(TJWindowManager_LayoutParamsExt.JavaClass.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
          TJWindowManager_LayoutParamsExt.JavaClass.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

        Window.setStatusBarColor(TJcolor.JavaClass.TRANSPARENT); );
      end;
    end);
{$ENDIF}
{$IFDEF IOS}
  SetStatusBarBackgroundColor(aColor);
{$ENDIF}
end;


GitHub上适用于Android和iOS的完整源代码:
https://github.com/rzaripov1990/StatusBar

posted @ 2020-04-07 10:46  战石电子  阅读(494)  评论(0)    收藏  举报