我打算在 Xamarin Android 项目中创建一个启动画面。
我有以下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center" android:background="#11aaff">
<ImageView
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/splash" />
</LinearLayout>
以下代码:
[Activity(Label = "My Xamarin App", MainLauncher = true, NoHistory = true, Theme = "@android:style/Theme.Light.NoTitleBar.Fullscreen",
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class SplashScreenActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.SplashScreen);
// Create your application here
//var intent = new Intent(this, typeof(MainActivity));
//StartActivity(intent);
//Finish();
}
protected override void OnStart()
{
base.OnStart();
// Create your application here
var intent = new Intent(this, typeof(MainActivity));
StartActivity(intent);
}
}
启动应用后,我会看到一个白色屏幕(注意主题),几秒后我的第二个活动(MainActivity
)会显示出来。
如果我删除StartActivity
并仅显示启动画面,它会显示白色屏幕大约1-2秒,然后出现图像和蓝色bacground(正如预期的那样) - 显然第二个活动不是启动。
如何立即显示布局?
答案 0 :(得分:1)
您可以使用自定义主题,而不是自定义布局。
请注意,要使此解决方案正常工作,您必须将以下Nugget包添加到项目中: Xamarin.Android.Support.v4 和 Xamarin.Android.Support.v7.AppCompat 如下面的参考链接所述。
我不得不这样做,并使用此链接作为参考: Creating a Splash Screen
基本上,您在drawable文件夹中创建一个.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"/><!-- Your BG color here -->
</item>
<item>
<bitmap
android:src="@drawable/splash"<!-- your splash screen image here -->
android:tileMode="disabled"
android:gravity="center"/>
</item>
</layer-list>
然后编辑styles.xml文件(默认情况下在Resources / values中),并添加:
<style name="MyTheme.Splash" parent ="Theme.AppCompat.Light">
<item name="android:windowBackground">@drawable/splash_screen</item><!-- here you should put the name of the file you just created in the drawable folder -->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
最后你的启动画面应该扩展 AppCompatActivity 而不是 Activity ,主题应该是你的自定义,如下所示:
[Activity(Label = "My Xamarin App", MainLauncher = true, NoHistory = true, Theme = "@style/MyTheme.Splash",
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class SplashScreenActivity : AppCompatActivity
我希望这有帮助。