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
基本步骤是:
- 创建 Spalsh 布局
- 创建绘图
- 创建动画
- 在你的 activity 中将它们全部连接起来(请注意,如果你将动画添加到 "OnCreate" 方法,动画将不会启动。) .
我想创建一个动画启动画面,但出现此错误:
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
基本步骤是:
- 创建 Spalsh 布局
- 创建绘图
- 创建动画
- 在你的 activity 中将它们全部连接起来(请注意,如果你将动画添加到 "OnCreate" 方法,动画将不会启动。) .