Xamarin Android中的全屏活动中无法显示布局

时间:2016-09-20 12:16:06

标签: xamarin.android

我打算在 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(正如预期的那样) - 显然第二个活动不是启动。

如何立即显示布局?

1 个答案:

答案 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

我希望这有帮助。