如何将启动画面设置为全屏?

Posted

技术标签:

【中文标题】如何将启动画面设置为全屏?【英文标题】:How can I make splash screen to full screen? 【发布时间】:2021-12-15 15:14:30 【问题描述】:

我正在尝试将启动画面设置为全屏。让我用图片来解释:

如您所见,顶部有一个黑条。底部还有一个白色的导航栏。顶部的黑条在打开应用程序几秒钟后出现,并导致背景图像缩小。

我的 splash_screen.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/splash_background"/>
    </item>
    <item android:gravity="fill">
        <bitmap
             android:tileMode="disabled"   
             android:gravity="fill"
             android:mipMap="true"
             android:src="@drawable/splash_logo"/>
    </item>
</layer-list>

我的样式.xml:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="MyTheme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowActionBar">false</item>
    </style>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.MaterialComponents.Light" />

</resources>

我的 SplashActivity.cs:

namespace OkuKazan

    [Activity(Label = "OkuKazan", Icon = "@mipmap/icon", Theme ="@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
    public class SplashActivity : Activity
    
        protected override void OnCreate(Bundle savedInstanceState)
        
            base.OnCreate(savedInstanceState);
            // Create your application here
        

        protected override async void OnResume()
        
            base.OnResume();
            await SimulateStartUp();
        

        async Task SimulateStartUp()
        
            await Task.Delay(TimeSpan.FromSeconds(3));
            StartActivity(new Intent(Application.Context, typeof(MainActivity)));
        
    

根据我的研究,他们使用的是 NavigationPage 之类的东西,但由于我是 xamarin 的新用户,所以我不明白。如果您能提供帮助,我将不胜感激。

编辑 1:

我编辑了我的 styles.xml,但它仍然无法正常工作。顶部的黑条和白条没有消失:(

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>m>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">false</item>
        <item name="android:windowBackground">@android:color/white</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:textCursorDrawable">@null</item>
        <item name="android:forceDarkAllowed">false</item>
    </style>

    <style name="MyTheme.Splash" parent="AppTheme">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.MaterialComponents.Light" />

</resources>

【问题讨论】:

【参考方案1】:

一个看起来像这样的主题:

  <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>m>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionModeOverlay">false</item>
    <item name="android:windowBackground">@color/white</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:textCursorDrawable">@null</item>
    <item name="android:forceDarkAllowed">false</item>
  </style>

  <style name="AppTheme.Splash" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowBackground">@drawable/bg_splashscreen</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
  </style>

然后在您的活动中使用AppTheme.Splash。这适用于我工作的一个应用程序。你可以玩转属性。但是,windowFullScreenwindowNoTitle 可能是最重要的。

【讨论】:

感谢您的回答,但仍然无法正常工作。我按照你说的编辑了我的 styles.xml。 你多久能看到你的飞溅? 差不多 3-4 秒。第三秒黑条来了。白条总是出现。 嗯,有趣 :D "await Task.Delay(TimeSpan.FromSeconds(3)); "当我删除这条线时,黑条仍然出现,但大约 0.5 秒后消失。

以上是关于如何将启动画面设置为全屏?的主要内容,如果未能解决你的问题,请参考以下文章

Movilizer - 启动画面 android

如何将 QVideoWidget 设置为全屏并在全屏小部件中有音量滑块?

iPhone应用程序的横向启动画面?

apple-touch-startup-image 制作iphone web应用程序的启动画面

如何在 JavaFX 中创建具有透明背景的启动画面

PhoneGap Build - 为 Android 设备设置启动画面