gpt4 book ai didi

xamarin - 用户打开应用程序后,如何使我的Xamarin.Forms for iOS和Android应用程序尽快显示启动屏幕?

转载 作者:行者123 更新时间:2023-12-04 03:56:07 25 4
gpt4 key购买 nike

我正在寻找提示,示例或任何可以指导我如何为Xamarin应用程序Xamarin.Forms应用程序创建启动屏幕的内容。

我认为我需要对iOS和Android项目进行不同的更改,并且已经研究了可以找到的东西。

但是,许多信息似乎已过时或不再起作用。

对于在iOS和Android上执行此操作的任何建议和建议,我们将不胜感激。

最佳答案

Xamarin.Forms是一种解决方案,它本身需要一段时间才能加载。由于所有跨平台的事情都必须等待Xamarin,因此没有跨平台的初始屏幕良好实现。

看来您必须分别为iOS和Android实现它。这将使启动屏幕显示得更快,并且比标准的蓝色Xamarin屏幕更早显示。

编辑:艾伦(Alan)要求一个完整的解决方案,所以这里是:

iOS:更改.iOS项目“资源”部分中的LaunchScreen.storyboard文件(顺便说一下,这是初始屏幕)。我建议改用Xcode打开它,因为坦率地说,Xcode的 Storyboard 编辑器比Xamarin更好。

Android:您将不得不在这里拥有图片。 From official Xamarin support-

The quickest way to render and display the splash screen is to create a custom theme and apply it to an Activity that exhibits the splash screen. When the Activity is rendered, it loads the theme and applies the drawable resource (referenced by the theme) to the background of the activity. This approach avoids the need for creating a layout file. The splash screen is implemented as an Activity that displays the branded drawable, performs any initializations, and starts up any tasks. Once the app has bootstrapped, the splash screen Activity starts the main Activity and removes itself from the application back stack.



这是涉及到的特定代码。下面是一个可绘制对象。将其放在Android项目的Resources/Drawable文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="@color/splash_background"/>
</item>
<item>
<bitmap
android:src="@drawable/splash"
android:tileMode="disabled"
android:gravity="center"/>
</item>
</layer-list>

这是针对主题的(将其添加到values/styles.xml,如果文档不存在,则添加values/styles.xml。)。
<resources>
<style name="MyTheme.Base" parent="Theme.AppCompat.Light">
</style>

<style name="MyTheme" parent="MyTheme.Base">
</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>
</style>
</resources>

将此代码作为MyTheme.cs添加到您的Android项目中:
[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{
static readonly string TAG = "X:" + typeof(SplashActivity).Name;

public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
{
base.OnCreate(savedInstanceState, persistentState);
Log.Debug(TAG, "SplashActivity.OnCreate");
}

// Launches the startup task
protected override void OnResume()
{
base.OnResume();
Task startupWork = new Task(() => { SimulateStartup(); });
startupWork.Start();
}

// Simulates background work that happens behind the splash screen
async void SimulateStartup ()
{
Log.Debug(TAG, "Performing some startup work that takes a bit of time.");
await Task.Delay (8000); // Simulate a bit of startup work.
Log.Debug(TAG, "Startup work is finished - starting MainActivity.");
StartActivity(new Intent(Application.Context, typeof (MainActivity)));
}
}

然后,在为Android完成所有操作之后,从MainActivity中删除MainLauncher属性,因为您的启动器现在是MyTheme。

这绝非易事,但这是目前唯一的方法。

关于xamarin - 用户打开应用程序后,如何使我的Xamarin.Forms for iOS和Android应用程序尽快显示启动屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com