Xamarin Android:动画启动画面

Xamarin Android: Animated Splash Screen

我想创建一个动画启动画面,但出现此错误:

Android.Content.Res.Resources+NotFoundException: File res/drawable/splash_screen.xml from drawable resource ID #0x7f0200bc

当我将 Imageview 的 src 更改为 @drawable/logo2 时,我的代码可以正常工作,但随后我得到一个静态 splas 屏幕。

SplashActivity.cs

[Activity(Theme = "@style/MyTheme", MainLauncher = true, NoHistory = true,     ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashActivity : Activity
{
    static readonly string TAG = "X:" + typeof(SplashActivity).Name;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your application here
    }

    protected override void OnResume()
    {
        base.OnResume();

        Task startupWork = new Task(() =>
            {
                Task.Delay(5000); // Simulate a bit of startup work.
            });

        startupWork.ContinueWith(t =>
            {
                StartActivity(typeof(MainActivity));
            }, TaskScheduler.FromCurrentSynchronizationContext());

        startupWork.Start();
    }

    public override void OnWindowFocusChanged(bool hasFocus)
    {
        if (hasFocus)
        {
            ImageView imageView = FindViewById<ImageView>(Resource.Id.animated_android);
            AnimationDrawable animation = (AnimationDrawable)imageView.Drawable;
            animation.Start();
        }
    }
}

Resources/Values/Style.xml

<resources>
    <style name="MyTheme" parent="Theme.AppCompat.Light">
     <item name="android:windowBackground">@drawable/splash_screen</item>
     <item name="android:windowNoTitle">true</item>
   </style>
</resources>

Resources/Drawable/splash_screen.xml

<?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>
     <ImageView android:id="@+id/animated_android"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@anim/animate_android"
      />
  </item>
</layer-list>

Resources/Anim/animate_android.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
            android:oneshot="false">
  <item android:drawable="@drawable/logo2"
    android:duration="100" />
  <item android:drawable="@drawable/Move"
    android:duration="100" />
  <item android:drawable="@drawable/logo"
    android:duration="100" />
  <item android:drawable="@drawable/icon"
    android:duration="100" />
  <item android:drawable="@drawable/About"
    android:duration="100" />
</animation-list>

你做错了几件事。

您需要使用布局而不是可绘制的作为基础。在布局中,您需要找到图像并为其设置适当的动画。

本教程末尾有一个示例 - Xamarin.Forms (Android): Workaround For Splash Screen With Logo, Custom Background and Animation

基本步骤是:

  1. 创建 Spalsh 布局
  2. 创建绘图
  3. 创建动画
  4. 在你的 activity 中将它们全部连接起来(请注意,如果你将动画添加到 "OnCreate" 方法,动画将不会启动。) .