I get the following screen on my Samsung tablet when I start debugging my Android application:
image2.jpeg
A short time later my splash image is displayed:
image1.jpeg
And finally a short time later the bar with the icons at the bottom is removed:
image0.jpeg
Which image is displayed on my Samsung tablet when I start my application? Can I change it? I thought that my splash image would be the first image on the screen but there is another image on the screen before my splash screen is displayed.
Is it possible to hide the bar with the icons when I start my application or is it normal that this bar is displayed when I start an application on an Android device?
I use target Android version 13, .NET 6.0 and Visual Studio for Mac 17.5 Preview (17.5 build 1095).
I don't use the .NET MAUI template to create my Android project but I use this code in my csproj to use .NET MAUI:
<UseMaui>true</UseMaui>
<UseMauiEssentials>true</UseMauiEssentials>
I use the following code in my Activity1.cs to display my splash image and to remove the bar with the icons:
protected override void OnCreate(Bundle bundle)
{
...
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager.DefaultDisplay.GetRealMetrics(displayMetrics);
int w1 = displayMetrics.WidthPixels;
int h1 = displayMetrics.HeightPixels;
_game = new Game1(w1, h1);
_game.OnLoadingContent += G_OnLoadingContent;
layout = new FrameLayout(this.ApplicationContext);
layout.AddView((View)_game.Services.GetService(typeof(View)));
splashView = new ImageView(this.ApplicationContext);
((ImageView)splashView).SetBackgroundResource(Resource.Drawable.splash_screen);
layout.AddView(splashView);
SetContentView(layout);
...
_game.Run();
//Hide action bar
View vw = (View)_game.Services.GetService(typeof(View));
vw.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.LayoutStable | SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutFullscreen | SystemUiFlags.HideNavigation | SystemUiFlags.Fullscreen | SystemUiFlags.ImmersiveSticky);
vw.SetOnSystemUiVisibilityChangeListener(new MyUiVisibilityChangeListener(vw));
}
//Hide action bar
private class MyUiVisibilityChangeListener : Java.Lang.Object, View.IOnSystemUiVisibilityChangeListener
{
View targetView;
public MyUiVisibilityChangeListener(View v)
{
targetView = v;
}
public void OnSystemUiVisibilityChange(StatusBarVisibility v)
{
if (targetView.SystemUiVisibility != ((StatusBarVisibility)SystemUiFlags.HideNavigation | (StatusBarVisibility)SystemUiFlags.ImmersiveSticky | (StatusBarVisibility)SystemUiFlags.LayoutStable | (StatusBarVisibility)SystemUiFlags.LayoutHideNavigation | (StatusBarVisibility)SystemUiFlags.LayoutFullscreen | (StatusBarVisibility)SystemUiFlags.Fullscreen))
{
targetView.SystemUiVisibility = (StatusBarVisibility)SystemUiFlags.HideNavigation | (StatusBarVisibility)SystemUiFlags.ImmersiveSticky | (StatusBarVisibility)SystemUiFlags.LayoutStable | (StatusBarVisibility)SystemUiFlags.LayoutHideNavigation | (StatusBarVisibility)SystemUiFlags.LayoutFullscreen | (StatusBarVisibility)SystemUiFlags.Fullscreen;
}
}
}
public override void OnWindowFocusChanged(bool hasFocus)
{
base.OnWindowFocusChanged(hasFocus);
if (hasFocus)
SetImmersive();
}
private void SetImmersive()
{
string except = string.Empty;
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
{
try
{
//Hide action bar
View vww = (View)_game.Services.GetService(typeof(View));
vww.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.LayoutStable | SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutFullscreen | SystemUiFlags.HideNavigation | SystemUiFlags.Fullscreen | SystemUiFlags.ImmersiveSticky);
vww.SetOnSystemUiVisibilityChangeListener(new MyUiVisibilityChangeListener(vww));
}
catch (Exception ex)
{
except = ex.ToString();
}
}
}
private void G_OnLoadingContent(object sender, System.EventArgs e)
{
layout.RemoveView(splashView);
}
In addition I used 'View.SystemUiVisibility' on other Android versions to hide the action bar but now on Android version 13 Visual Studio displays: 'View.SystemUiVisibility' is obsolete: 'deprecated' And Visual Studio displays: 'Display.GetRealMetrics(DisplayMetrics?)' is obsolete: 'deprecated'
Can I still use 'View.SystemUiVisibility' and Display.GetRealMetrics on Android version 13?