You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12+系统下Xamarin Forms全屏启动页实现方案问询

Android 12+ Xamarin Forms 全屏启动页解决方案

针对Android 12+系统,必须使用官方的SplashScreen API实现全屏启动页,旧方案会被系统强制替换为默认圆角图标加载界面,以下是可行步骤:

1. 安装依赖NuGet包

在Xamarin Android项目中安装Xamarin.AndroidX.Core.SplashScreen包,这是调用Android 12+启动屏API的核心依赖。

2. 配置启动屏主题

在Resources/values/styles.xml中创建自定义启动屏主题,覆盖默认圆角图标样式并开启全屏:

<style name="FullScreenSplashTheme" parent="Theme.SplashScreen">
    <!-- 设置启动页背景(纯色或自定义Drawable) -->
    <item name="windowSplashScreenBackground">#FFFFFF</item>
    <!-- 禁用默认图标,避免显示圆角方形加载界面 -->
    <item name="windowSplashScreenAnimatedIcon">@null</item>
    <!-- 启动屏动画时长,设为0直接过渡到应用 -->
    <item name="windowSplashScreenAnimationDuration">0</item>
    <!-- 开启全屏模式 -->
    <item name="android:windowFullscreen">true</item>
    <!-- 适配刘海屏,允许内容延伸到刘海区域 -->
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    <!-- 禁用退出动画,避免过渡卡顿 -->
    <item name="windowSplashScreenExitAnimation">@null</item>
</style>

在AndroidManifest.xml中,将MainActivity的主题替换为上述自定义主题:

<activity android:name=".MainActivity"
          android:theme="@style/FullScreenSplashTheme"
          android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

3. 修改MainActivity代码

在MainActivity.cs的OnCreate方法中,先初始化启动屏,再切换回应用主题并加载Xamarin Forms:

protected override void OnCreate(Bundle savedInstanceState)
{
    // 初始化启动屏,必须在base.OnCreate之前调用
    SplashScreen.InstallSplashScreen(this);
    // 切换回应用原本的主题(替换为你项目的实际主题)
    SetTheme(Resource.Style.MainTheme);

    base.OnCreate(savedInstanceState);

    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
    LoadApplication(new App());
}

4. 自定义全屏图片启动页(可选)

如果需要用图片作为全屏启动页,创建Resources/drawable/splash_background.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 背景色兜底 -->
    <item android:drawable="@color/white"/>
    <!-- 全屏显示的图片,确保图片适配不同分辨率 -->
    <item>
        <bitmap
            android:src="@drawable/splash_image"
            android:gravity="fill"/>
    </item>
</layer-list>

然后修改FullScreenSplashTheme中的windowSplashScreenBackground为@drawable/splash_background即可。

关键注意事项

  • 确保项目的targetSdkVersion设置为31(Android 12)或更高,符合应用仅适配Android 12+的要求。
  • 彻底移除旧的启动页实现(如单独的SplashActivity、旧主题中的windowBackground配置),避免与新API冲突。
  • 测试需在Android 12+设备或模拟器上进行,低版本系统无需兼容。

内容的提问来源于stack exchange,提问作者user18107302

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 05:12:27