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
浙公网安备 33010602011771号